Laravel 5.3.
包模型有许多步骤模型.Step Model有一个列调用,status其类型为tiny int和created_atcolumn.例如,一个包A,具有以下步骤:
并且,包B,具有以下步骤:
就像那样,许多包,每个包都有很多步骤.
A最新一步的状态是2,而且B是3
我的问题是,如何查找最新步骤状态为2的包?预期的结果是包的集合,在此示例中应包含A.
我试过在我的包模型中添加它.
public function steps()
{
return $this->hasMany('App\Step');
}
public function status()
{
return $this->steps()->latest()->limit(1);
}
Run Code Online (Sandbox Code Playgroud)
和查询
Package::whereHas('status', function ($q) {
$q->where('status', 2);
})->get();
Run Code Online (Sandbox Code Playgroud)
但无法得到预期的结果.
不期望的是,如果Packages Table只有1行,则Package B,预期结果为空集合.但它返回一个包含的集合B.
我也尝试将Package Model中的状态函数更新为
public function status()
{
return $this->hasOne('App\Step')->latest();
}
Run Code Online (Sandbox Code Playgroud)
但它仍然无效.
那么,正确的方法是什么?非常感谢你.