2013-06-04 56 views
0

我想不出如何在laravel雄辯的orm中使用更新和限制方法。雄辯的更新和限制

$affectedRows = Promo::where('used','=',0) 
    ->update(array('user_id' => Auth::user()->id)) 
    ->limit(1); // Call to a member function limit() on a non-object 
    //->take(1); // Call to a member function take() on a non-object 

我試過限制和採取方法。

我想只做一個結果會更新。

但我想,我不能使用限制或更新方法。

有沒有辦法通過口才更新只有一行?


地址:

雄辯ORM

$affectedRows = Promo::where('user_id','=',DB::raw('null'))->take(1) 
     ->update(
      array(
       'user_id'  => Auth::user()->id, 
       'created_ip' =>Request::getClientIp(), 
       'created_at' => new DateTime, 
       'updated_at' => new DateTime 
      ) 
     ); 

查詢生成器

$affectedRows = DB::table('promos')->whereNull('user_id') 
    ->take(1) 
    ->update(array(
     'user_id'  => Auth::user()->id, 
     'created_ip' =>Request::getClientIp(), 
     'created_at' => new DateTime, 
     'updated_at' => new DateTime 
    )); 

這兩個代碼沒有限制PARAM添加到查詢

輸出:

update `promos` set `user_id` = '1', `created_ip` = '127.0.0.1', `created_at` = '2013-06-04 14:09:53', `updated_at` = '2013-06-04 14:09:53' where `user_id` = null 

回答

3

我用原始查詢。對於雄辯和查詢生成器都沒有限制/更新和刪除查詢的方法限制。使用

DB::update(DB::raw("UPDATE query")); 

這樣子。

3

我還沒有嘗試過,但Laravel 4邏輯讓我覺得這句法會工作:

$affectedRows = Promo::where('used','=',0) 
    ->limit(1) 
    ->update(array('user_id' => Auth::user()->id)); 
+0

感謝您的回答。我編輯了我的問題並嘗試了您的解決方案,但沒有奏效。 –