ایجاد رابطهی یک به چند و مدیریت آن با 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 }}
توی وبسایتم سعی میکنم محتوایی که تصور کنم ارزشمنده و به بقیه کمکی میکنه رو منتشر کنم. امیدوارم از مطالب وبسایت بتونید استفاده کنید و به کارتون بیاد. در ضمن اگه پروژهی تحت وبی دارید که نیاز به برنامهنویسی و اجرا داره، میتونید با شماره انتهای صفحه با من تماس بگیرید تا در موردش با هم صحبت کنیم.