用hasMany关系进行雄辩的紧急加载不起作用

时间:2019-05-07 14:57:42

标签: php laravel eloquent

我的代码当前不起作用,但是我的关系是正确的。

项目模型

normal

找不到“ spent_on”。

3 个答案:

答案 0 :(得分:1)

您似乎正在尝试限制该关系的记录。我建议查看有关限制急切加载的文档。这是我认为您要完成的代码示例:

$projects = App\Model\Project::with(['timeEntries' => function ($query) use ($request) {
    $query->whereBetween('spent_on', $request->debut, $request->fin);
}])->get();

https://laravel.com/docs/5.8/eloquent-relationships#constraining-eager-loads

答案 1 :(得分:0)

就像@aynber所写的那样,如果您的spent_on属性是相关模型的一部分,则应将其包含在查询中并带有闭包。

$array_of_project = Project::with(['timeEntries' => function ($time_entry) use ($request) {
    $time_entry->whereBetween('spent_on', [$request->input('debut'), $request->input('fin')]);
}])->get();

答案 2 :(得分:0)

如果spent_ontime_entries表中的一列,则您的whereBetween是不正确的,因为它会在projects表中查找。但是您可以改为将其添加到with

$array_of_project = Project::with(['timeEntries' => function($query) use ($request) {
    return $query->whereBetween('spent_on', [$request->input('debut'), $request->input('fin')]);
})->get();