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

标签 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
}

问题是 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/

相关文章:

php - Eloquent sortBy() 访问器不排序

PHP Laravel eloquent with multiple databases,其实是select something

php 从日期字符串中获取时间

php - 日期、月份和年份下拉框

php - 如何使用 php artisan 删除模型?

mysql - 在 Laravel 中使用关系创建模型

php - laravel eloquent 中的联合运算符

php - 这个时间格式是什么?

PHP:递归获取父级的子级

c++ - 如何旋转模型以跟随路径