Php Laravel-使用一对多关系保存记录时出错
努力用laravel关系更新我的代码 我有两张桌子。客户和与客户有许多关系的预订和与客户有归属关系的预订 预订表还通过链接表与产品表具有多对多关系 我获得了客户记录,现在需要为客户创建预订 我假设这个过程是: 创建预订对象,将预订附加到客户,然后链接到产品。(reservation表有一些关系,但我现在要让它工作) 如果我尝试此代码,我会得到一个错误Php Laravel-使用一对多关系保存记录时出错,php,laravel,laravel-4,eloquent,Php,Laravel,Laravel 4,Eloquent,努力用laravel关系更新我的代码 我有两张桌子。客户和与客户有许多关系的预订和与客户有归属关系的预订 预订表还通过链接表与产品表具有多对多关系 我获得了客户记录,现在需要为客户创建预订 我假设这个过程是: 创建预订对象,将预订附加到客户,然后链接到产品。(reservation表有一些关系,但我现在要让它工作) 如果我尝试此代码,我会得到一个错误字段“customer\u id”没有默认值-数据库表允许空值,并且没有设置验证规则,因此假设这与我设置的关系有关 `$reservation =
字段“customer\u id”没有默认值
-数据库表允许空值,并且没有设置验证规则,因此假设这与我设置的关系有关
`$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()中代码>
然后我需要使用创建的$reservation在product link表中创建条目,以便能够访问新创建的reservation及其与产品的关系
我可以使用$customer->reservation()->save($reservation)创建条目代码>但是我似乎没有$reservation对象可以使用(或者我有吗?)
我对这种关系感到非常困惑,非常感谢所有帮助我理解如何让它发挥作用的人
谢谢
以下是我在模型中的关系:
Customer Class:
public function reservation() {
return $this->hasMany('Reservation');
}
Reservation Class:
public function customer() {
return $this->belongsTo('Customer');
}
唯一有效的方法是$customer->reservation()->save($reservation)代码>-因此我假设这是正确的方法,并且必须重新编写代码<代码>关联()
更新:在mysql中重新创建了我的表-我现在可以按预期保存原始预订记录,然后使用以下命令关联到客户记录:
$reservation->customer()->associate($customer)
这需要一段时间才能让它和我融为一体 第一部分
因为客户有很多预订,所以在添加预订之前需要客户id
在你的密码上
您需要首先找到拥有预订的客户
$customer = Customer::find($id);
现在,
然后,$reservation->save()代码>现在应该成功了
第二部分
关于你的问题:
“我可以使用$customer->reservation()->save($reservation)创建条目;但是我似乎没有一个$reservation对象可以使用(或者我可以吗?)”
您可以使用
$reservations = $customer->reservation->get();
//where customer is the one you had on Customer::find($id);
然后,您可以逐个循环预订。(尽管我认为您可能需要预订ID,因此上面的第一种方法更好)第1部分
因为客户有很多预订,所以在添加预订之前需要客户id
在你的密码上
您需要首先找到拥有预订的客户
$customer = Customer::find($id);
现在,
然后,$reservation->save()代码>现在应该成功了
第二部分
关于你的问题:
“我可以使用$customer->reservation()->save($reservation)创建条目;但是我似乎没有一个$reservation对象可以使用(或者我可以吗?)”
您可以使用
$reservations = $customer->reservation->get();
//where customer is the one you had on Customer::find($id);
然后,您可以逐个循环预订。(虽然我认为您可能需要预订ID,因此上面的第一种方法更好)我不确定我是否了解如何$customer->reservation()->保存($reservation)代码>的行为不同于$customer->reservation()->associate($reservation)代码>以产生问题的方式?能否显示在Customer和Reservation模型中创建的关系方法?在何处定义$Customer
?$Customer在前面的代码中定义为Customer::find($id);我不确定我是否理解如何$customer->reservation()->保存($reservation)代码>的行为不同于$customer->reservation()->associate($reservation)代码>以产生问题的方式?能否显示在Customer和Reservation模型中创建的关系方法?在何处定义$Customer
?$Customer在前面的代码中定义为Customer::find($id);