怎么才能實(shí)現(xiàn)這個(gè)查詢呢?Sale::with(['catalog']) ->whereIn('id', $ids) ->update(['price' => DB::raw('catalog.price')]);這不起作用,它顯示未定義的表...我嘗試輸入表的名稱,但它是相同的。在互聯(lián)網(wǎng)上我總是找到簡(jiǎn)單的查詢:Sale::with(['catalog']) ->whereIn('id', $ids) ->update(['price' => 5]);好的!當(dāng)我想要更新具有相同值的所有行時(shí)很容易,此外當(dāng)您想要使用同一個(gè)表的列進(jìn)行更新時(shí)也很容易,例如:Sale::with(['catalog']) ->whereIn('id', $ids) ->update(['price' => DB::raw('price_alternative')]);但是如何使用另一個(gè)具有關(guān)系的表的列呢?我還沒(méi)有找到解決方案。我知道這可以使用整個(gè)原始查詢來(lái)解決,但我想知道是否可以通過(guò)雄辯的方式來(lái)實(shí)現(xiàn)
2 回答

哆啦的時(shí)光機(jī)
TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可能需要加入catalog
查詢構(gòu)建器上的表。這與使用不同with()
。類似的東西
Sale::whereIn('id', $ids) ->join('catalog', 'sales.catalog_id', '=', 'catalog.id') ->update(['price' => DB::raw('catalog.price')]);

慕的地6264312
TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個(gè)贊
這并不比@Qirel 的答案更好,但這是雄辯的方式,我喜歡這個(gè),因?yàn)檫@更清楚。
$Sales = Sale::whereIn('sales.id', $ids)
->with('Cat')->get();
$Sales->map(function($q){
$q->price = $q->Cat->price;
$q->save();
});
假設(shè)您在銷售模型中有以下關(guān)系代碼:
public function Cat()
{
return $this->hasOne(CatModel::class, 'id', 'catalog_id');
}
- 2 回答
- 0 關(guān)注
- 221 瀏覽
添加回答
舉報(bào)
0/150
提交
取消