2013-09-22 97 views
0

我最近了解到Laravel 4 Eloquent中的動態where子句(我認爲這就是所謂的),它使得像User::where('first_name', 'Jon')->get()這樣的子句變得更好User::whereFirstName('Jon')->get()。這有多靈活?Laravel 4雄辯動態子句

我能爲例如做以下

  • 多列比=其他User::whereFirstNameOrLastName('Jon', 'Smith')->get();
  • 使用運營商像>=LIKE

回答

5

您可以使用Query Scope達到你需要的東西。

一個簡單的例子:

public function scopeFirstOrLastName($query, $first, $last) 
{ 
    return $query->where('first_name', 'LIKE', '%' . $first . '%') 
       ->where('last_name', 'LIKE', '%' . $last . '%'); 
} 

使用它:

$user->firstOrLastName('John', 'Doe')->get(); 

,你認爲合適,您可以命名它,你可以使用任何運營商(或任何查詢生成器操作)內。

+0

這樣你可以得到一個SQL注入。 – vinsa

+0

Hi @ vinsa,只要您使用Laravel的QueryBuilder,您應該可以安全地使用SQL注入。 '''注意:Laravel查詢構建器始終使用PDO參數綁定來保護您的應用程序免受SQL注入攻擊。沒有必要清理字符串作爲綁定傳遞。['More on Queries](http://laravel.com/docs/4.2/queries) – JofryHS

+0

是的,你是對的@JofryHS,這段代碼通過PDO,它應該是SQL注入保存。 – vinsa