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

- 2 هفته پیش
توسط miladk313 آپدیت شد
miladk313 ( 490 تجربه )
2 هفته پیش
تخصص : برنامه نویس لاراول

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

بهترین پاسخ انتخاب شده توسط miladk313
علی بیات
2 هفته پیش

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

  • هر 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...
        );
علی بیات ( 145287 تجربه )
2 هفته پیش
تخصص : توسعه دهنده ارشد وب

رابطه "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 ( 490 تجربه )
2 هفته پیش
تخصص : برنامه نویس لاراول

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

علی بیات ( 145287 تجربه )
2 هفته پیش
تخصص : توسعه دهنده ارشد وب

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

  • هر 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...
        );
برای ارسال پاسخ باید وارد سایت شوید