Laravel 5.4 - Eloquent Relationship Update
36,078
When you use relation between two models it's better if you update them as they are in the relation. so yes you'r almost right . but for more information it's better if you use separate REQUEST file other than in the controller. one more thing based on experience it's better when you update the relation first . overall it will be something like this :
public function update(SomeRequestFile $request, $id)
{
$car = Car::find($id);
$user = $car->user()
->update([
'name'=> $request->name,
'ic_number'=> $request->ic_number,
]);
$carDetail = Car::where('id', $id)
->update([
'vehicle_no'=> $request->vehicle_no,
'location_id' => $request->location_id,
'created_at' => $request->created_at,
]);
return back();
}
Author by
Khairul
Updated on January 14, 2020Comments
-
Khairul over 4 years
I have a question on updating a table in Laravel. I have a
User
andCar
Model. Example as below,User.php
<?php namespace App; use Illuminate\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use Notifiable; protected $guarded = []; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; public function cars() { return $this->hasMany(Car::class); } }
Car.php
<?php namespace App; class Car extends Model { public function user() { return $this->belongsTo(User::class); } }
For the update, I am using below codes on my controller,
public function update(Request $request, $id) { // validations here $car = Car::find($id); $carDetail = Car::where('id', $id) ->update([ 'vehicle_no'=> $request->vehicle_no, 'location_id' => $request->location_id, 'created_at' => $request->created_at, ]); $user = $car->user() ->update([ 'name'=> $request->name, 'ic_number'=> $request->ic_number, ]); return back(); }
I am able to update the table but want to know if I am doing it right.
Is there an accurate or a better way of doing it.
-
Khairul over 6 yearsThanks for the answer. Regarding the separate request file, do you mean to separate them on different method?
-
Alireza Amrollahi over 6 years@Khairul no , i mean like this : php artisan make:request SomethingRequest... then you can modify validations in there , for more info :laravel.com/docs/5.5/validation#creating-form-requests .. hope this help