Борьба за обновление моего кода с помощью laravel отношений.Laravel - запись с сохранением ошибки с одним отношением
У меня есть две таблицы. Клиент и бронирование с Клиентом, имеющим hasMany отношения с резервированием и резервированием, имеющие отношение к Клиенту.
Таблица резервирования также имеет много-много отношений с таблицей продуктов через таблицу ссылок.
Я получаю запись о клиентах в порядке, и теперь мне нужно создать заказ для клиента.
Я предполагаю, что этот процесс: создать объект бронирования, приложить заказ клиента, а затем связаться с ним. (таблица резервирования имеет несколько отношений, но я пока буду работать)
Если я попробую этот код, я получаю сообщение об ошибке Field 'customer_id' doesn't have a default value
- таблица базы данных допускает null, и нет установленных правил проверки, поэтому предположим, что это делать с отношениями, которые я создал.
`$reservation = new Reservation;
$reservation->play_date=$play_date->format('Y-m-d');
$reservation->booked_date=$booked_date->format('Y-m-d');
$reservation->am_tee=$am_time->format('H:i:s');
$reservation->pm_tee=$pm_time->format('H:i:s');
$reservation->save();
$customer->reservation()->associate($reservation);`
Ошибка происходит с $reservation->save();
Я тогда нужен использовать созданные $ резервирования для создания записей в таблице ссылок продукта, так нужно, чтобы иметь возможность получить доступ к недавно созданной резервации и это отношения с продуктами.
я могу создать запись с помощью $customer->reservation()->save($reservation);
, но тогда я, кажется, не есть объект $ резервирования для работы с (или я?)
Я очень запутываемый отношений так благодарен за помощь чтобы понять, как заставить это работать
Благодаря
вот мои отношения в моделях:
Customer Class:
public function reservation() {
return $this->hasMany('Reservation');
}
Reservation Class:
public function customer() {
return $this->belongsTo('Customer');
}
только мето d, который, как представляется, работает $customer->reservation()->save($reservation);
- поэтому я предполагаю, что это правильный метод и придется переработать мой код. associate()
обновления: воссоздана моя таблица в MySQL - теперь я могу сохранить оригинальную запись резервирования, как ожидается, а затем сопоставить записи клиента с помощью:
$reservation->customer()->associate($customer)
Это занимает некоторое время для того, чтобы утонуть в с меня!
Я не уверен, что я понимаю, как '$ customer-> reservation() -> save ($ reserve);' ведет себя иначе, чем '$ customer-> reservation() -> associate ($ reserve);' таким образом, чтобы создать проблему? Можете ли вы показать свои методы отношений, созданные как в моделях клиента, так и в резервировании? – fideloper
Где вы определяете '$ customer'? – Firo
$ клиент определяется ранее в коде с помощью Customer :: find ($ id); – Ray