ایجاد رابطه‌ی یک به چند و مدیریت آن با Eloquent در لاراول

فرض بر این است که دو جدول داریم:

users
categories

رابطه‌ی ما نیز به این صورت است که هر کاربر می‌تواند تنها عضو یک دسته باشد و هر دسته می‌تواند شامل چند کاربر باشد.

پس در مدل‌های خود به صورت زیر عمل می‌کنم:

مدل User

مشخص کرده‌ایم که هر user می‌تواند به یک دسته تعلق داشته باشد. البته پارامتر دوم اختیاری است و در صورتی نیاز است که ما نام کلید خارجی را در جداولمان طبق اصول لاراول مشخص نکرده باشیم و لاراول نتواند آن را شناسایی کند. نام متدها نیز به دلخواه انتخاب می‌شود، ولی برای جلوگیری از سردرگمی‌های بعدی بهتر است طبق اصول این کار صورت گیرد.

public function category(){
	return $this->belongsTo(Category::class,'category_id');
}

مدل Category: در این مدل نیز مشخص شده که هر category می‌تواند به تعداد زیادی user داشته باشد.

public function user(){
	return $this->hasMany(User::class);
}

حالا قصد دارم در ویوی خود بگویم که عنوان دسته‌ی کاربرانی که از جدول users گرفته‌ام را نمایش بده. با اینکه من تنها اطلاعات یک جدول (users) را واکشی می‌کنم، بدون کار خاصی و به سادگی هر چه تمام‌تر لاراول category متناظر با کاربر را به من بر می‌گرداند:

قسمت کنترلر:

public function index(){
	$users = User::orderBy('sort','DESC')->paginate(5);
	return view('index',compact('users'));
}

قسمت ویو:

{{ $user->category->title }}

درباره نویسنده: احسان

مطالب زیر را حتما بخوانید