在模型对象上创建关系后,我没有从对象中获取新添加的关系实例

时间:2018-01-22 04:38:05

标签: laravel laravel-5.5

我在$task$moment之间存在一对多的关系。这么多时刻属于任务。

在编辑任务时,我正在添加这样的时刻:

api.php隐含:

Route::put('tasks/{task}', 'PetController@updateTask');

public function updateTask(Request $request, Task $task) {

    foreach ($request->moments as $requestMoment) {
        $task->moments()->create($requestMoment);
    }

    $task->fresh();

    foreach($task->moments as $moment) {
         // logging out $moment
    }
}

当我第二次foreach时,它找不到新创造的时刻。我甚至在第二次迭代之前做了$task->fresh(),但它仍然没有找到新创建的。

2 个答案:

答案 0 :(得分:3)

表单docs要仅在尚未加载关系时加载关系,请使用loadMissing方法:

public function updateTask(Request $request, Task $task) {

        foreach ($request->moments as $requestMoment) {
            $task->moments()->create($requestMoment);
        }

        $task->loadMissing('moments');

        foreach($task->moments as $moment) {
             // logging out $moment
        }
}

答案 1 :(得分:1)

使用$task->with('moments')->fresh()包含关系。

$task->load('moments')其中一个应该有用。