我有以下Laravel Eloquent代码,其中会有很多方法链接:
$foo = EloquentFoo::orderBy('xyz');
if(true)
{
$foo->whereHas('eloquentModel',function($q){
return $q->where('name','=','john');
});
}
鉴于复杂的条件,我需要在不使用'orderBy'或任何其他静态方法的情况下实例化Eloquent Query Builder。
我尝试使用以下内容,但失败了(不知道为什么):
$foo = new EloquentFoo;
答案 0 :(得分:2)
// get the query
$fooQuery = EloquentFoo::query();
// chain methods
if (whatever) $fooQuery->whateverMethod();
// execute
$fooQuery->get();
答案 1 :(得分:0)
一个简单的方法:我将我的主键与不存在的东西(不是OPTIMAL解决方案)进行比较,有兴趣看到其他解决方案,虽然我认为这可能有所帮助:
$foo = EloquentFoo::where('id','!=','0'); // id is the primary key and there is no row with value 0
// so basically above I am searching everything
// Perform Chaining Operation
if(true)
{
$foo->whereHas('eloquentModel',function($q){
return $q->where('name','=','john');
});
}
注意:您可以根据需要在链中多次使用id,它仍然有效:
EloquentFoo::where('id','!=','0')->where('id','!=','0')->get()
希望它有所帮助(我知道它根本不是OPTIMAL)。