2014-09-03 72 views
0

是否可以在Eloquent中使用WHERE?我需要這樣做:如何在言語中使用WHERE?

if ($params) { 
    foreach ($params as $param => $value) 
     $this->users->where($param, '=', $value); 
} 

$users = $this->users->get($values)->take($limit)->toArray(); 

P.S. $this->users模型是由Eloquent

+1

你需要'whereIn',不'where',你的榜樣判斷。 – 2014-09-03 07:29:33

+0

@ N.B。 'whereIn'是'OR'類型,而OP在這裏有'AND' – 2014-09-03 13:06:31

+0

@JarekTkaczyk_deczo_ - 你對'where'和'in'的區別是正確的,但是OP *所需要的*不正確,因爲他只顯示邏輯和代碼片段。 – 2014-09-03 13:28:58

回答

1

擴展實例,你需要做的是:

  1. 啓動查詢。
  2. 追加您的查詢的位置。
  3. 完成你的查詢(takegettoArray
$query = $this->users->newQuery(); 

if ($params) { 
    foreach ($params as $param => $value) 
     $query = $query->where($param, $value); 
} 

$query = $query->take($limit)->get($values)->toArray(); 

dd($query); 
+0

'take'不會'完成'查詢,'toArray'也不會。 'take'爲查詢設置限制,而'toArray'是一個集合(和模型)方法,所以只能在查詢執行後才能調用。並執行你需要'get' /'find' /'first'等等。 – 2014-09-03 13:10:12

0

當然可以。看到你的代碼,我會說你需要在哪裏,看看文檔澄清。 參見,http://laravel.com/docs/eloquent

您可以在WHERE子句中使用:

$model = User::where('$param', '=', $something)->get(); 
0

建立你的口才對象使用get()功能之前。

邏輯步驟:

  1. 創建雄辯對象
  2. 呼叫所有的條件/限制/連接功能
  3. 使用get()取你的行。

因此,您的代碼將如下:

$users = $this->users; 
if ($params) { 
    foreach ($params as $param => $value) 
     $users->where($param, '=', $value); 
} 

$usersResult = $users->take($limit)->get()->toArray(); 
0

你也可以這樣使用:

$query->where($params); 

// instead of 
foreach ($params as $param => $value) 
     $query = $query->where($param, $value); 
} 
+0

引發錯誤。 – user1692333 2014-09-03 13:16:58

+0

你有什麼錯誤和Laravel版本? – 2014-09-03 13:17:27