亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel eloquent 使用關系列更新列

Laravel eloquent 使用關系列更新列

PHP
慕桂英4014372 2023-09-08 21:55:21
怎么才能實現這個查詢呢?Sale::with(['catalog'])    ->whereIn('id', $ids)    ->update(['price' => DB::raw('catalog.price')]);這不起作用,它顯示未定義的表...我嘗試輸入表的名稱,但它是相同的。在互聯網上我總是找到簡單的查詢:Sale::with(['catalog'])    ->whereIn('id', $ids)    ->update(['price' => 5]);好的!當我想要更新具有相同值的所有行時很容易,此外當您想要使用同一個表的列進行更新時也很容易,例如:Sale::with(['catalog'])    ->whereIn('id', $ids)    ->update(['price' => DB::raw('price_alternative')]);但是如何使用另一個具有關系的表的列呢?我還沒有找到解決方案。我知道這可以使用整個原始查詢來解決,但我想知道是否可以通過雄辯的方式來實現
查看完整描述

2 回答

?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

您可能需要加入catalog查詢構建器上的表。這與使用不同with()。類似的東西

Sale::whereIn('id', $ids)
    ->join('catalog', 'sales.catalog_id', '=', 'catalog.id')
    ->update(['price' => DB::raw('catalog.price')]);


查看完整回答
反對 回復 2023-09-08
?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

這并不比@Qirel 的答案更好,但這是雄辯的方式,我喜歡這個,因為這更清楚。


$Sales = Sale::whereIn('sales.id', $ids)

    ->with('Cat')->get();


$Sales->map(function($q){

    $q->price = $q->Cat->price;

    $q->save();

});

假設您在銷售模型中有以下關系代碼:


public function Cat()

{

    return $this->hasOne(CatModel::class, 'id', 'catalog_id');

}


查看完整回答
反對 回復 2023-09-08
  • 2 回答
  • 0 關注
  • 123 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號