2016-12-25 155 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

通过使用此方法,您可以在查询中添加链接。 –