Что 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