我在尝试使用简单的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获取客户端对象的刷新版本)?
答案 0 :(得分:2)
更新后只需保存模型:
$project->update($data);
$project->save();
return $project->client;