我有一个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用法?
答案 0 :(得分:-1)
而不是->limit(1)
,请使用->first()
。
更新:误读你所说的,这应该有用。