2016-12-25 108 views
3

我在Laravel的新功能。我想使用laravel查詢構建器進行動態查詢。
通常情況下,我可以在PHPLaravel動態使用查詢生成器的查詢

$where = array(
    'hello' => 'world' 
); 

function get($where = null){ 
    if($where == "") $where = ""; 
    //Function which converts where clause into queries 
    wheretoqueries($where); //converts where clause 
    $sql = "SELECT * FROM $tbl $where"; 
    return $sql; 
} 
echo get($where); 

進行動態查詢,如果WHERE子句是空的查詢將

SELECT * FROM $tbl 

如果WHERE子句是不是空的查詢將

SELECT * FROM $tbl WHERE hello = "world" 

Laravel ORM作品如果鍵和值存在,則對where子句罰款

A::where($where)->get(); 

如果哪裏是空以下方法不起作用

回答

1

嘗試這個。如果$ where變量包含某些內容,則查詢將執行,否則將從A Model中檢索所有數據。

function get($where = null){ 
    if($where != null){ 
     A::where('field_name', '=', $where)->first(); 
    }else{ 
     A::all(); 
    } 
    } 

注:如果您的查詢返回多於一個值,那麼你必須使用get(),在查詢生成器,而不是第一個結束()方法; 參考:https://laravel.com/docs/5.3/queries#where-clauses

+0

很高興知道我的回答很有幫助。 –

0

您可以鏈where查詢爲:

$query = Model::query(); 

if (!empty($value)) { 
    $query->where('column', $value); 
} 

$query->get(); 

OR

您可以使用when方法:

Model::when($value, function ($query) use ($value) { 
     return $query->where('column', $value); 
    }) 
    ->get(); 
+0

通過使用此方法,您可以在查詢中添加鏈接。 –