Laravel Eloquent Relationship而不是加入与父母无关的第三个表

时间:2014-08-17 21:52:20

标签: mysql laravel eloquent

我有一个orders表和一个order_items表,分别与hasManybelongsTo相关联。

还有products表格分别与order_itemshasMany belongsTo相关联。

我的目标是创建一个Orders对象,该对象还包含不使用join的产品。

这是可能的,如何建立关系以在Eloquent中实现这一点?

理想情况下,我希望将其放在with中,但我无法弄清楚如何使其发挥作用。

订单型号:

class Order extends Eloquent {

    public function orderItems()
    {
        return $this->hasMany('OrderItem');
    }
}

OrderItem模型:

class OrderItem extends Eloquent {

    public function order()
    {
        return $this->belongsTo('Order');
    }

    public function products()
    {
        return $this->belongsTo('Product');
    }
}

产品型号:

class Product extends Eloquent {

    public function orderItems()
    {
        return $this->hasMany('OrderItem');
    }
}

查询:

$order = Order::with('user', 'orderItems', 'address')
        ->where('orders.id', $id)
        ->get()
        ->toArray();

1 个答案:

答案 0 :(得分:1)

您正在寻找belongsToMany关系

class Order extends Eloquent {

    public function items()
    {
        return $this->belongsToMany('Product','order_items','order_id','product_id'); //Assuming that 'order_items' table has order_id and product_id as foreign keys
    }
}

您也可以work使用数据透视表(order_items表格)。