插入多对多关系laravel 5

时间:2017-02-24 17:58:48

标签: php mysql laravel eloquent

我有2个型号:

class Order extends Model
{
    protected $fillable = ['user_id','name','surname','fathers_name','phone_number','city','post_office','comment'];

    public function user()
    {
        return $this->belongsTo('App\User');
    }

    public function products()
    {
        return $this->belongsToMany('App\Product', 'order_product');
    }

}
class Product extends Model
{

    public function order()
    {
        return $this->belongsToMany('App\Order', 'order_product');
    }

    public function category()
    {
        return $this->belongsTo('App\Category');
    }
}

3张表:

product:
id
name
...

order_product:
id
order_id
prod_id
qty
...

order
id
city
phone
...

和2个数据数组: $ data = $ request->除了(' _token','提交'); - 有关客户的信息 $ order_content - 包含购物车中产品信息的数组

那么,问题是如何在DB中插入所有这些数据?我试着阅读很多对很多插入:同步,附加等等。但是什么都不懂:c

1 个答案:

答案 0 :(得分:1)

想象一下,你有一个id为1的产品。一个id为1的订单。产品是订单的一部分,所以你必须附上它们。你做了

$product = Product::find(1);
$order = Order::find(1);
$order->products()->attach($order->id);

但是,在您的情况下,您的数据透视表有更多数据,例如'qty'。那你就做了,

$order->product()->attach($order->id, ['qty' => 2]);

到目前为止,我们只将一个产品附加到订单中。如果您想同时附加许多产品,请执行以下操作:

$order->products()->sync([
    $product->id => ['qty' => 1],
    $product2->id => ['qty' => 3]
]);

我希望这有助于更好地理解。我建议您一次又一次地阅读文档,直到它有意义。