Что Laravel сохранить один-ко-многим отношения

у меня есть следующие отношения, установленные в Laravel:

OrderStatus Model
  - hasMany('Order')

 Order Model
  - 'belongsTo('OrderStatus');

база данных настроена с orders и order_statuses таблица. The 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 вручную. Я читал о " прикреплении связанного модель " и "связывание моделей" в документах Laravel, но я не могу понять, соответствуют ли они моему прецеденту. Я думаю, что проблема в том, что я работаю непосредственно с дочерней моделью (заказ) и пытаюсь установить ее родительскую. Есть ли для этого функция?

2 ответов


конечно, вы можете сделать это:

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

(status() является отношением belongsTo. Возможно, вам придется изменить это имя)


правильный способ сохранения отношения для новой связанной модели заключается в следующем:

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

документация:http://laravel.com/docs/4.2/eloquent#inserting-related-models