2017-02-19 5 views
0

フィールドrateをプライマリキーuser_idでテーブルに更新しようとしました。テーブルLaravelのフィールドを更新する方法は?

したがって、増分を増やす必要があります。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

'Rating :: updateOrCreate'のメソッドを提供してください。それは使用されているコードなのです。 – davejal

+0

これはちょうどモデル – Darama

答えて

2

あなたが2つの別々の値として列と値を渡すためです。

変更:

["user_id", $id] 

へ:

["user_id" => $id] 

・ホープ、このことができます!

+0

ですが動作しますが、私は+ -1をどのように更新できますか、増減を意味しますか? – Darama

+0

[updateOrCreate](https://laravel.com/api/5.2/Illuminate/Database/Eloquent/Builder.html#method_updateOrCreate)は、最初のパラメータを属性として示し、2番目の値を値として示します。 'Rating :: updateOrCreate – wSkc

+0

@MarcHerzog 'updateOrCreate'に渡す最初のパラメータのように、あらかじめ設定されているキー値の配列の配列ですテーブルに存在する属性で、2番目のパラメータは、その行を更新するために使用するキー値のペアの配列です。 –

1

Laravel(eloquent)は、関連モデルを流暢に変更する方法を提供します。以下のモデル構造と仮定

public function ratings() 
{ 
    return $this->hasMany('App\Rating'); 
} 

は、あなたが簡単にassociate()

$user = User::findOrFail($userId); 
$rating = Rating::findOrFail($ratingId); 

$rating->user()->associate($user)->save(); 

を通じて関係を更新することができますUser.php

Rating.php

public function user() 
{ 
    return $this->belongsTo('App\User'); 
} 

の詳細を読みますRelationships in Eloquent

+0

もう一度見て、私は 'updateOrCreate'を使用します。 – Darama

関連する問題