Rad*_*ity 1 mysql laravel laravel-5 laravel-query-builder
我正在使用 Laravel 5.6 - 查询生成器。
是否可以以编程方式创建一个查询生成器 where 声明一个值等于所有内容?
假设我有这段代码:
$foo = 1;
DB::table('users')
->select('*')
->where('status', '=', $foo)
->get();
Run Code Online (Sandbox Code Playgroud)
如果$foo = 1那么就简单了。该查询将选择状态为 1 的所有内容。
问:是否可以将一些东西分配给$foo变量分配一些内容,以便选择查询返回每条记录,而不管数据库的状态如何?
当然,我可以用这样的 2 个查询语句来实现它:
$foo = 1;
if ($foo === null) {
DB::table('users')
->select('*')
->get();
} else {
DB::table('users')
->select('*')
->where('status', '=', $foo)
->get();
}
Run Code Online (Sandbox Code Playgroud)
但是,我正在寻找更短/更有效的解决方案。是否有可能以某种方式 - 不在raw codeWhere 语句中使用?
你可以尝试这样的事情:
$query = DB::table('users')->select('*');
// $foo = 'get it...';
if ($foo) {
$query->where('status', $foo);
}
$result = $query->get();
Run Code Online (Sandbox Code Playgroud)
甚至更多laravel-ish:
$result = DB::table('users')->select('*')
->when($foo, function ($query) use ($foo) {
return $query->where('status', $foo);
})
->get();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1186 次 |
| 最近记录: |