Laravel 5 - 更新模型不会立即更新关系

时间:2015-05-18 17:26:43

标签: php model eloquent laravel-5

我在尝试使用简单的hasOne关系更新模型时遇到了一个有趣的问题。我正在做以下事情:

public function update(MyRequest $request, $id)
{
    $project = Project::find($id);
    $data = $request->all(); //has a client_id
    $project->update($data);
    return $project->client; //Project model holds this hasOne relationship
}

问题是$project->client函数返回的update仍然是客户端的旧版本。 $project->update(...)不应该刷新这些关系吗?我们现在正在使用的代码是:

public function update(MyRequest $request, $id)
{
    $project = Project::find($id);
    $data = $request->all(); //has a client_id
    $client = Client::find($data['client_id']);
    $project->update($data);
    $project->client()->associate($client);
    return $project->client; //Project model holds this hasOne relationship
}

此时我们都很好。那么,该函数的更高版本是否正确的方法(IE获取客户端对象的刷新版本)?

1 个答案:

答案 0 :(得分:2)

更新后只需保存模型:

$project->update($data);
$project->save();

return $project->client;