我正在尝试创建一个返回第一个最新或null的查询范围。
我是这样创建的:
public function scopeUpcomingAction()
{
$upcomingAction = $this->actions()->latest()->whereNotNull('completed_at')->take(1);
if ($upcomingAction->exists()) {
return $upcomingAction;
} else {
return null;
}
}
但是当我像这样使用这个范围时:
return $subject->load([
'tasks' => function($query) {
$query->with('upcomingAction');
}
]);
当comingAction为null时,它给我一个像这样的空数组:
{
"id": 3,
"created_at": "2018-01-13 19:08:30",
"updated_at": "2018-01-13 19:08:30",
"upcoming_action": []
}
这可以说是单数吗?
答案 0 :(得分:1)
您使用本地范围作为与with()
方法的关系。你不能这样做。您应该使用这样的本地范围:
Model::someScope()->get();
加载single latest record for hasMany()
relation is pretty tricky。您需要创建另一个关系,它必须是hasOne()
。