渴望用Eloquent belongsToMany加载单个项目

时间:2014-09-02 15:30:30

标签: laravel eloquent

我有一个Batch模型,它有许多结果并且属于一个项目。批次的当前状态基于其最新结果的状态。所以,在我的批处理模型中,我有这个:

public function allForProject($pid)
{
    $batches = $this
        ->with(static::$relatedObjects)
        ->with('current_status')
        ->where('project_id', '=', $pid)
        ->get();
    return $batches;
}

public function current_status()
{
    return $this
        ->belongsToMany('BehatEditor\Models\Result')
        ->orderBy('created_at', 'DESC')
        ->limit(1)
        ;
}

...所以说“ - > with('current_status')”我试图只加载该批次的最新结果 - 每批可能有数千个我不想返回到前端。

现在,这不会中断,但“limit(1)”实际上似乎限制了返回结果的批次数。即使我的每一批都有我的测试数据的2个结果,当我使用limit(1)时,只有其中一个带有任何数据。当我使用limit(2)时,只有2个批次返回一个current_status记录(所需),但其余的有current_status的空数组。

这是一个使用Eloquent作为ORM的Silex项目,因此Laravel的具体方法不起作用。

非常感谢任何帮助!

更新

看起来Eloquent不支持这一点。见http://irclogs.julien-c.fr/2013-12-19/01:48#log-52b25061a599aafb54008650。我想更新我的问题是如何干净地将我需要的原始SQL添加到查询中?我可以提供仅包含所需SQL的方法,还是需要替换allForProject()中的所有ORM用法?

1 个答案:

答案 0 :(得分:-1)

而不是->limit(1),请使用->first()

更新:误读你所说的,这应该有用。