gs-rp
gs-rp

Reputation: 377

updating belongs to relationship laravel 5.2

I'd like to improve this piece of code when updating a related model (1 to 1) on laravel and also know if this is right, wrong, right but not recommended, etc. Thanks all.

    $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();

Upvotes: 0

Views: 752

Answers (2)

Sovon
Sovon

Reputation: 1824

First you have to define relationship of user and tenant in you user model:

// User.php
public function tenant()
{
    return $this->hasOne('App\Tenant');
}

As this is an one to one model, you can update your related model like following. Make sure the relation model also exists.

$user = User::find($id);
$user->name = $request->input('name');
$user->email = $request->input('email');
$user->tenant->suite_number = $request->input('suite_number');
$user->push();

Upvotes: 1

ctf0
ctf0

Reputation: 7587

i believe it could be

// 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;
]);

for eager loading it would be

$user = User::with('tenant')->find($id);
$user->update([
    'name'                => $request->name;
    'email'               => $request->email;   
    'tenant.suite_number' => $request->suite_number;
]);

or reverse relation

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

Upvotes: 0

Related Questions