Laravel 使用查询生成器进行动态查询
Laravel dynamic where queries using Query Builder
我是 Laravel 的新人。我想使用 laravel 查询构建器进行动态查询。
通常我可以在 php
中进行动态查询
$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();
如果 where 为 null 以下方法将不起作用
您可以将 where
查询链接为:
$query = Model::query();
if (!empty($value)) {
$query->where('column', $value);
}
$query->get();
或
您可以使用 when
方法作为:
Model::when($value, function ($query) use ($value) {
return $query->where('column', $value);
})
->get();
试试这个。如果 $where 变量包含某些内容,则查询将执行,否则它将从 A
模型中检索所有数据。
function get($where = null){
if($where != null){
A::where('field_name', '=', $where)->first();
}else{
A::all();
}
}
注意: 如果您的查询 return 多个值,那么您必须在查询生成器末尾使用 get() 方法而不是 first();
参考:https://laravel.com/docs/5.3/queries#where-clauses
我是 Laravel 的新人。我想使用 laravel 查询构建器进行动态查询。
通常我可以在 php
$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();
如果 where 为 null 以下方法将不起作用
您可以将 where
查询链接为:
$query = Model::query();
if (!empty($value)) {
$query->where('column', $value);
}
$query->get();
或
您可以使用 when
方法作为:
Model::when($value, function ($query) use ($value) {
return $query->where('column', $value);
})
->get();
试试这个。如果 $where 变量包含某些内容,则查询将执行,否则它将从 A
模型中检索所有数据。
function get($where = null){
if($where != null){
A::where('field_name', '=', $where)->first();
}else{
A::all();
}
}
注意: 如果您的查询 return 多个值,那么您必须在查询生成器末尾使用 get() 方法而不是 first(); 参考:https://laravel.com/docs/5.3/queries#where-clauses