مجید
4 سال پیش توسط مجید مطرح شد
2 پاسخ

استفاده از رابطه ی یک به چند در جدول

سلام
من یه جدول دارم به اسم order_product و داخلش ستون های order_id و product_id و qty (تعداد محصولات در هر سفارش) و color (رنگ محصول) و size (سایز محصول) وجود داره ستون های order_id و product_id رابطه چند به چند بین order و product هست و ستون های color و size هم یک رابطه یک به چند بین attributeGroup و order_product هست یعنی مثلا توی ستون color جدول order_product مقدار 10 قرار میگیره و این 10 به شماره id جدول attributeGroup اشاره میکنه که title اون هست مثلا آبی
برای گرفتن مقدار qty با توجه به روابط میتونم به صورت product->pivot->qty$ بنویسم و مقادیر را دریافت کنم
کد کنترلر :
() order=Order::with('products.photos')->whereId($id)->first$

کد blade :
@foreach($order->products as $product)
<tr>
<td class="text-center">{{$product->pivot->qty}}</td>
</tr>
@endforeach
حالا برای گرفتن مقدار color و size باید چطوری عمل کنم؟؟؟


ثبت پرسش جدید
حسین شیری نژاد
تخصص : programmer
@hosseinshirinegad98 4 سال پیش مطرح شد
0

اگر برای رنگ یک جدول و برای سایز هم یک جدول داشته باشی چون هر محصول میتونه چند رنگ و چند سایز داشته باشه باید از رابطه یک به چند در لاراول استفاده کرد که مستنداتش در راکت هست


وحید
تخصص : Fullstack
@forughi.vahid 4 سال پیش آپدیت شد
0

@karimpanah76
یه راهش اینه که دستی این کارو انجام بدید، یعنی توی مدلتون order و product تابعی بنویسید به اسم getColor و pivot->colorid رو بگیرید و دستی به جدول رنگ ها کوئری بزنید .
راه دوم اینه که برای جدول پیوت هم مدل تعریف کنید ،
توی مدل product به ریلیشن بفهمونید که کلاس پیوت کجاست

 public function orders()
{
    return $this->belongsToMany(Order::class)->using(OrderProduct::class)->withPivot('color')
}

و یک فایل مدل برای جدول پیوت به اسم OrderProduct درست کنید

use Illuminate\Database\Eloquent\Relations\Pivot;

class OrderProduct extends Pivot{
    protected $table = 'order_product';
    public function color() {
        return $this->belongsTo('Color'); 
    }
}

برای استفادش هم میتونید از pivot->color به رنگ دسترسی پیدا کنید


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

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