如何更新表Laravel中的字段或创建?

时间:2017-02-19 15:46:55

标签: laravel laravel-5.4

我尝试按主键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)

2 个答案:

答案 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();

详细了解Relationships in Eloquent