2017-03-02 5 views
0

は、私は、次の雄弁なコードを持っている:Laravel:検索を使用して更新複数行()

$gifts = FriendGift::find($collectedGifts); // An array of IDS 

私はcollected = 1として、すべてを設定します。

私はこの試みた:

$gifts->update(['collected' => 1]); 

を私は次のエラーを取得:

Method update does not exist 

何が問題になっていますか?

答えて

3

だけでモデルを呼び出し、このような大量の更新を行います。

FriendGift::whereIn('id', $collectedGifts)->update(['collected' => 1]); 
+0

「何が間違っている」という実際の質問にもお答えいただければ、あなたの答えは完璧です。@lagboxはきれいに説明されています。 – Amarnasan

+0

私は彼の答えをコピー/リピートできません。彼はすでに何が間違っていると言った...次のステップは、通常 "どのように私はそれを修正することができます"です? – EddyTheDove

6

モデルにupdateを呼び出していません。 updateのメソッドを持たないEloquent Collectionにupdateを呼び出しています。

0

$ collectedGiftsはアレイ、そのつもりでない仕事である場合。 Model :: find()は配列ではなく、単純なIDを待っています。

とにかく、フィールドを更新する場合は、要素の保存メソッドを使用することをお勧めします。 これで、必要なRowを取得し、値を割り当ててインスタンスを保存します。たとえば :

$gifts = FriendGifts::find(15);//This is just 1 gift 
$gifts->collected = 1; 
$gifts->save(); 

複数の贈り物のために:そのような

$gifts = FriedGifts::where('id',15)->get(); 
foreach($gifts as $one_gift){ 
    $one_gift->collected = 1; 
    $one_gift->save(); 
} 

か何か!

希望すると便利です。 幸運を祈る!

関連する問題