Laravel保存了一对多的关系

fly*_*123 11 php laravel eloquent laravel-4

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

OrderStatus Model
  - hasMany('Order')

 Order Model
  - 'belongsTo('OrderStatus');
Run Code Online (Sandbox Code Playgroud)

数据库设置有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();
Run Code Online (Sandbox Code Playgroud)

我想知道是否有内置函数来执行此操作而不是order_status_id手动设置.我在Laravel文档中读到了"附加相关模型"和"关联模型",但我无法弄清楚这些是否适合我的用例.我认为我遇到的问题是我正在直接使用子模型(顺序),并试图设置它的父模型.这有功能吗?

luk*_*ter 21

当然你可以这样做:

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

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


Mys*_*yos 11

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

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

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