2017-07-27 50 views
0

我取出一個特定的記錄使用爲什麼Laravel /雄辯單個對象的save()更新多個記錄

$myTableObj = MyTable::where(['type' => $sometype])->first(); 

獲取它成功,更新一些領域,並與

$myTableObj->save(); 
保存數據表

令人驚訝的是,這條記錄與一起更新,另一條記錄也有'type'= $ sometype。可以做些什麼來防止這種情況? 注意:最初表沒有自動增量id字段,但我已經在論壇上看到它可能會在Laravel中產生問題,所以我添加了它,但沒有解決問題。

+1

我們可以看到更多的代碼? –

+0

你如何測試這個?那是內部測試嗎?你的表格模式似乎有問題,你能顯示模型類嗎? –

回答

-1

據我所知update()是更新,但是,我的答案正常工作,並適合更新。它適用於你不希望列再次被定義爲更新的情況(當它們不可填寫時,以主鍵作爲條件進行測試)

$myTableObj->save();基本上它用於保存新記錄,如果你想更新那行您可以更新像下面的代碼:

$myTableObj=new MyTable; 
$myTableObj->exists=true; 
$myTableObj->type=$sometype;//this is your condition, identify 
$myTableObj->update(); 

我覺得這裏發生了什麼是Laravel是節約以及更新的行。

+0

https://laravel.com/docs/5.4/eloquent#updates保存應該工作 –

+0

更新的作品,以及我已經在我自己的項目中使用這個。 – Option

+0

在檢索模型中調用'save'方法來更新模型。 –

0

方法save()僅使用'id'提交。

你可以試試這個

$myTableObj = MyTable::where(['type' => $sometype])->update(['something' => 'value']); 

Source

+0

這與OP要求的內容相反。他只希望他檢索到的記錄更新 –