首页 文章

Laravel保存了一对多的关系

提问于
浏览
9

我在Laravel中设置了以下关系:

OrderStatus Model
  - hasMany('Order')

 Order Model
  - 'belongsTo('OrderStatus');

数据库设置为 orders 表和 order_statuses 表 . orders 表有 order_status_id 的字段 .

保存订单时,我通过获取相应的订单状态模型手动设置 order_status_id ,如下所示:

$status = OrderStatus::where(['name'=>'sample_status'])->firstOrFail();
$order->order_status_id = $status->id;
$order->save();

我想知道是否有内置函数来执行此操作而不是手动设置 order_status_id . 我想出这些是否适合我的用例 . 我认为问题是我直接使用子模型(顺序),并尝试设置它的父级 . 这有功能吗?

2 回答

  • 21

    当然你可以这样做:

    $status = OrderStatus::where(['name'=>'sample_status'])->firstOrFail();
    $order = new Order;
    $order->status()->associate($status);
    $order->save();
    

    status() 是belongsTo关系 . 您可能需要调整该名称)

  • 10

    保存新相关模型关系的正确方法如下:

    $status = OrderStatus::where(['name'=>'sample_status'])->firstOrFail();
    $order = new Order;
    $status->order()->save($order);
    

    文档链接:http://laravel.com/docs/4.2/eloquent#inserting-related-models

相关问题