小编Boh*_*ang的帖子

Laravel.如何找到具有特定最新相关型号的型号

Laravel 5.3.

包模型有许多步骤模型.Step Model有一个列调用,status其类型为tiny int和created_atcolumn.例如,一个包A,具有以下步骤:

  • 10月18日10:00,状态1
  • 10月19日09:00,状态2

并且,包B,具有以下步骤:

  • 10月19日08:00,状态1
  • 10月19日09:00,状态2
  • 10月19日10:00,状态3

就像那样,许多包,每个包都有很多步骤.

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)

但它仍然无效.

那么,正确的方法是什么?非常感谢你.

php laravel

5
推荐指数
1
解决办法
354
查看次数

标签 统计

laravel ×1

php ×1