我尝试按主键rate
更新表中的字段user_id
。
所以,我需要增加减量rate
字段。如果行不存在,我需要创建它。
我试过了:
$this->point = -1; // Or $this->point = 1;
Rating::updateOrCreate(["user_id", $id], ["rate" => $this->point]);
但它不起作用:
SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'where clause' (SQL: select * from `rating` where (`0` = user_id and `1` = 5) limit 1)
答案 0 :(得分:2)
这是因为您将列和值作为两个单独的值传递。
变化:
["user_id", $id]
为:
["user_id" => $id]
希望这有帮助!
答案 1 :(得分:1)
Laravel(eloquent)提供了一种更新相关模型的流畅方式 假设以下模型结构:
Rating.php
public function user()
{
return $this->belongsTo('App\User');
}
user.php的
public function ratings()
{
return $this->hasMany('App\Rating');
}
您可以通过associate()
$user = User::findOrFail($userId);
$rating = Rating::findOrFail($ratingId);
$rating->user()->associate($user)->save();