راکت
حل شده

رابطه ی hasOneThrough در لاراول

3 پاسخ

سلام .دوستان ، کسی اطلاعاتی در مورد رابطه ی hasOneThrough که از لاراول 5.8 اضافه شده داره ؟

ثبت پرسش جدید

پاسخ‌ها

3
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

بهترین پاسخ

این جوری به مثال نگاه کنید که:

  • هر Supplier یک User داره...
  • و هر User یه سری History یا تاریخچه‌ای داره
  • حال فرض کنید، می‌خواهیم History یه Supplier رو داشته باشیم

اما داخل جدول History .. ما فیلد supplier_id رو نداریم... در چنین شرایطی از رابطه hasOneThrough باید استفاده کرد.
و به شکل زیر:

        return $this->hasOneThrough(
            'App\History',
            'App\User',
            'supplier_id', // Foreign key on users table...
            'user_id', // Foreign key on history table...
            'id', // Local key on reviewers table...
            'id' // Local key on users table...
        );
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

رابطه "hasOneThrough" مدل ها را از طریق یک رابطه واسطه واحد پیوند می دهد.

users
    id - integer
    supplier_id - integer

suppliers
    id - integer

history
    id - integer
    user_id - integer

هرچند جدول history فیلد supplier_id نداره، اما رابطه hasOneThrough می‌تواند دسترسی به history کاربر را در مدل suppliers ارائه دهد.

اطلاعات بیشتر در مستندات لاراول:
https://laravel.com/docs/5.8/eloquent-relationships#has-one-through

miladk313
miladk313
@miladk313

تخصص: برنامه نویس لاراول

جناب بیات عزیز این متن رو خودمم داخل مستندات خوندم ولی درست متوجه نشدم . میشه یکم ملموس تر توضیح بدین ؟ممنون

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

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

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