首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新属于relationship laravel 5.2

更新属于relationship laravel 5.2
EN

Stack Overflow用户
提问于 2016-08-26 00:24:54
回答 2查看 578关注 0票数 0

我想在更新laravel上的相关模型(1对1)时改进这段代码,也知道这是正确的,错误的,正确的但不推荐的,等等。谢谢所有人。

代码语言:javascript
复制
    $user = User::find($id);
    $user->name = $request->input('name');
    $user->email = $request->input('email');
    $user->update();

    $tenant = Tenant::where('user_id', $id)->first();
    $tenant->suite_number = $request->input('suite_number');
    $tenant->update();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-26 11:54:32

首先,你必须在你的用户模型中定义用户和租户的关系:

代码语言:javascript
复制
// User.php
public function tenant()
{
    return $this->hasOne('App\Tenant');
}

由于这是一对一模型,您可以像下面这样更新相关模型。确保关系模型也存在。

代码语言:javascript
复制
$user = User::find($id);
$user->name = $request->input('name');
$user->email = $request->input('email');
$user->tenant->suite_number = $request->input('suite_number');
$user->push();
票数 1
EN

Stack Overflow用户

发布于 2016-08-26 00:29:13

我相信这可能是

代码语言:javascript
复制
// you can omit the input() if u want to
$user = User::find($id);
$user->update([
    'name' => $request->name;
    'email' => $request->email;    
]);

$tenant = Tenant::where('user_id', $id)->first();
$tenant->update([
    'suite_number' => $request->suite_number;
]);

对于急切加载,它将是

代码语言:javascript
复制
$user = User::with('tenant')->find($id);
$user->update([
    'name'                => $request->name;
    'email'               => $request->email;   
    'tenant.suite_number' => $request->suite_number;
]);

或反向关系

代码语言:javascript
复制
$tenant = Tenant::with('user')->where('user_id', $id)->first();
$tenant->update([
    'suite_number' => $request->suite_number;
    'user.name'    => $request->name;
    'user.email'   => $request->email;  
]);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39150334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档