第一个数组中的put条件有多个laravel
我用我的雄辩的查询生成器筛选数据时遇到了一些问题。我有事务模型和状态模型。哪个事务具有多个状态。我想得到hasMany relation的第一个数组,并把它放在哪里。这是我的密码第一个数组中的put条件有多个laravel,laravel,eloquent,lumen,Laravel,Eloquent,Lumen,我用我的雄辩的查询生成器筛选数据时遇到了一些问题。我有事务模型和状态模型。哪个事务具有多个状态。我想得到hasMany relation的第一个数组,并把它放在哪里。这是我的密码 $var = Transaction::with([ 'status' => function ($q) { return $q->first(); } ])->whereHas('status',function (
$var = Transaction::with([
'status' => function ($q) {
return $q->first();
}
])->whereHas('status',function ($x){
return $x->where('status',0);
})->get();
状态的模型是
public function status(){
return $this->hasMany('App\Models\Status','transaction_id','id')->orderBy('status','desc');
}
结果仍然没有给我正确的数据。它应该通过返回第一个数组状态值为0的数据,您可以使用hasOne relation构建一个新的关系,然后加载它:
public function firstStatus(){
return $this->hasOne('App\Models\Status','transaction_id','id')->orderBy('status','desc')->where('status',0); // or mybe just ' ->latest() to get the most recent one.
}
然后,您可以使用以下关系:
$var = Transaction::with(['firstStatus'])->whereHas('status',function ($x){
return $x->where('status',0);
})->get();
这将是第一个加载的关系。您可以为该关系创建另一个函数或更改exist函数
public function firstStatus() {
return $this->hasMany('App\Models\Status','transaction_id','id')->orderBy('status','desc')->limit(1);
}
因为我终于能弄明白了
首先,我必须设置如下所述的模型:
public function firstStatus(){
return $this->hasOne('App\Models\Status','transaction_id','id')->orderBy('status','desc'); // or mybe just ' ->latest() to get the most recent one.
}
然后将控制器放在如下位置:
$var = Transaction::with(['firstStatus' => function($q){
return $q->where('status',0);
}])->whereHas('status',function ($x){
return $x->where('status',0);
})->get();
谢谢->whereHas('status')表示返回的模型或函数有多个?是的,此whereHas将确保您具有该状态,在这里,您可以使用任一关系