Al_*_*Al_ 4 php laravel laravel-4
我有一个工作的查询构建器:
$article = Page::where('slug', '=', $slug)
->where('hide', '=', $hidden)
->first();
Run Code Online (Sandbox Code Playgroud)
但我想只添加第二个where语句,如果隐藏等于1.我已经尝试了下面的代码,它显示了我正在尝试做的逻辑,但它不起作用.
$article = Page::where('slug', '=', $slug);
if ($hidden == 1) {
$article->where('hide', '=', 1);
}
$article->first();
Run Code Online (Sandbox Code Playgroud)
我正在使用Laravel 4,但我认为问题仍然存在于Laravel 3中.
是的,Eloquent和查询构建器有一点"陷阱".试试下面的代码;)
$query = Page::where('slug', '=', $slug);
if ($hidden == 1) {
$query = $query->where('hide', '=', 1);
}
$article = $query->first();
Run Code Online (Sandbox Code Playgroud)
请注意在条件中分配$ query.这是因为第一个(静态调用)将不同的对象返回到条件中的查询对象.解决这个问题的一种方法,我相信由于最近的提交,就像这样:
$query = Page::where('slug', '=', $slug)->query();
Run Code Online (Sandbox Code Playgroud)
这将返回查询对象,您可以按照正常情况执行所需操作(而不是重新分配$ query).
希望有所帮助.
| 归档时间: |
|
| 查看次数: |
2109 次 |
| 最近记录: |