今天我在尝试使用简单的 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
}
问题是 update
函数返回的 $project->client
仍然是旧版本的客户端。 $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 获取客户端对象的更新版本)?
最佳答案
更新后保存模型:
$project->update($data);
$project->save();
return $project->client;
关于php - Laravel 5 - 更新模型不会立即更新关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30309409/