راکت

رابطه چند تا دیتابیس با هم

4 پاسخ

IMG
عکس

طبق عکس بالا چطوری در لاراول ارتباط بسازم که با داشتن یک $actor به تمام فیلم هایی که بازی کرده دسترسی داشته باشم

<?php
$actor= AppActor::find(1)
$actor->movies
علی
علی
@Phoenix
ثبت پرسش جدید

پاسخ‌ها

4
محسن بستان
محسن بستان
@mohsenbostan

تخصص: Senior Backend Developer

@Phoenix
اگر لاراول کار میکنید ، پیشنهاد میکنم اول کامل یاد بگیرید چون این موضوع یکی از اصلی ترین مفهایم هستش یعنی Model ها که باید کامل بدونید. درکل برای این کار باید بدونید برای یک جدول شما قراره یک رابطه با چند تا داده داشته باشه یا برعکس و کلا چند تا با چندتا باشه . همونطور که گفتم باید این ها رو کامل بدونید.
بعد برای این نوعی که بالا گفتید ، شما باید یک رابطه یک به چند بین تیبل Actor و Movie بسازید. داخل مدل Actor یاید کد زیر رو بنویسید.
اول اون بالا این رو اضافه کنید :

use Movie;

بعدش این رو داخل کلاس اضافه کنید.

public function movies() {
    return $this->hasMany(Movie::class);
}

الان داخل کنترلرتون میتونید از کد خودتون استفاده کنید.

علی
علی
@Phoenix

@mohsenbostan

IMG

این رابطه چطور
نمیخوام به صورت مستقیم بین فیلم و بازیگر رابطه باشه چون هر فیلم چند تا شخصیت داره و هر شخصیت به یک بازیگر مربوط میشه
فقط نمیدونم دقیقا رابطه Has Many Through رو چطور پیاده کنم یکم پیچیدست

شاید پاسخ شما همین‌جا باشد

محسن بستان
محسن بستان
@mohsenbostan

تخصص: Senior Backend Developer

@Phoenix
کل رابطه ها رو جدا جدا برای همه مدل ها پیاده سازی کن. بعدا میشه از رابطه یک تیبل به رابطه تیبل دیگه هم دسترسی داشت

مهدی
مهدی
@code2code

خوب از رابطه پولی مورفیک استفاده کن
توی رابطه پولی مورفیک میتونی یه ستون واسه نوع کاراکتر یه ستون واسه آیدی کاراکتر تعیین کنی اینجوری میتونی بدون اینکه جدولات

actor
    id - integer
    name - string

director
    id - integer
    name - string

movie
    id - integer
    name - string

movieable
    movie_id - integer
    movieable_id - integer // actor - director ...
    movieable_type - string  // actor - director ...

https://laravel.com/docs/5.7/eloquent-relationships#polymorphic-relationships
داکیومنت کامله نیاز به توضیح نمیبینم...

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام