以laravel关系更新许多记录

时间:2014-05-02 05:09:42

标签: laravel eloquent foreign-key-relationship

我有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

付款模式

我真的很感激任何帮助!

2 个答案:

答案 0 :(得分:0)

您需要为表ip创建模型,有关模型创建的完整信息,请参阅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();