【发布时间】:2016-06-12 19:49:24
【问题描述】:
我有一个包含 3 列的用户设置表(或见下图):user_id、setting、value。
然后我有两个功能,一个是保存时区,一个是保存时间格式。
public function setTimezone($timezone){
$settings = UserSettingsModel::firstOrNew(['user_id' => $this->user->id, 'setting' => 'timezone']);
$settings->setting = 'timezone';
$settings->value = $timezone;
$result = $settings->save();
}
public function setTimeFormat($timeformat){
$settings = UserSettingsModel::firstOrNew(['user_id' => $this->user->id, 'setting' => 'timeformat']);
$settings->setting = 'timeformat';
$settings->value = $timeformat;
$result = $settings->save();
}
当我第一次运行这些函数时(每个函数都是通过 ajax 调用独立运行的),我知道这是正确的:
然后,当我尝试更新 timeformat,(同样每个都是独立运行的)我得到这个:
由于某种原因,timezone 设置覆盖了timeformat 设置,我不知道为什么。
这是 UserSettingsModel 类:
class UserSettingsModel extends BaseModel{
protected $table = 'user_settings';
protected $fillable = ['user_id', 'setting', 'value'];
protected $primaryKey = 'user_id';
public $timestamps = false;
}
这是时区更新的查询日志:
array:2 [
0 => array:3 [
"query" => "select * from `user_settings` where (`user_id` = ? and `setting` = ?) limit 1"
"bindings" => array:2 [
0 => 1
1 => "timezone"
]
"time" => 0.27
]
1 => array:3 [
"query" => "update `user_settings` set `value` = ? where `user_id` = ?"
"bindings" => array:2 [
0 => "America/Chicago"
1 => 1
]
"time" => 19.73
]
]
这是 timeformat 查询的查询日志:
array:2 [
0 => array:3 [
"query" => "select * from `user_settings` where (`user_id` = ? and `setting` = ?) limit 1"
"bindings" => array:2 [
0 => 1
1 => "timeformat"
]
"time" => 0.25
]
1 => array:3 [
"query" => "update `user_settings` set `value` = ? where `user_id` = ?"
"bindings" => array:2 [
0 => "12hr"
1 => 1
]
"time" => 13.67
]
]
【问题讨论】:
-
不是 Laravel 专家...但我会检查进行 ajax 调用的代码。
-
它正在发送正确的数据,变量
$timezone和$timeformat在转储中有正确的数据。 -
laravel 代码似乎没有问题。
-
我看不出 laravel 代码有什么问题。如果你直接访问 url,它会做你想做的事吗?
-
我不能,因为它是
PUT类型