我有4个桌子,我试图在Laravel中工作,我无法弄清楚如何使用eloquent来执行特定查询。我想更新属于用户的所有订单(通过product_id)并且具有null payout_id。
这个原始的sql语句有效,但我不确定如何使用eloquent这个......也许sync?
UPDATE order_items i JOIN products p on (i.product_id = p.id) SET i.payout_id = null where p.user_id = 3
用户模型
产品型号 FK:user_id
订单型号 FK:product_id FK:payout_id
付款模式
我真的很感激任何帮助!
答案 0 :(得分:0)
您需要为表i
和p
创建模型,有关模型创建的完整信息,请参阅http://laravel.com/docs/eloquent。
在i
的模型中,您将创建与p
的关系:
public function p()
{
return $this->('p','id','product_id');
}
然后,您可以按如下方式运行查询:
$results = i::with('p')
->where('user_id', '=', 3)
->update(array('payout_id' => null));
答案 1 :(得分:0)
First define a function orders in User Model
public function orders()
{
return $this->hasManyThrough('Orders', 'Product','user_id','product_id');
}
User::where('id','=',$userid)->with(array('orders'=>function($query){
$query->where('payout_id','=',0)->update(array('payout_id'=>$updatevalue));
}))->first();