私のコードをlaravel関係で更新するのに苦労しています。
私は2つのテーブルを持っています。Customer および Reservations with Customer は、Reservation と hasMany 関係を持ち、Reservation は Customer との属している関係を持ちます。
また、予約テーブルは、リンク テーブルを介して製品テーブルと多対多の関係を持ちます。
顧客レコードを正常に取得したので、顧客の予約を作成する必要があります。
プロセスは、予約オブジェクトを作成し、予約を顧客に添付してから、製品にリンクすると想定しています。(予約テーブルにはいくつかの関係がありますが、今のところこれを機能させます)
このコードを試すと、エラーが発生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();
次に、作成した $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);
は、これが正しい方法であり、コードを作り直す必要があると思います。associate()
更新: mysql でテーブルを再作成しました。元の予約レコードを期待どおりに保存し、次を使用して顧客レコードに関連付けることができるようになりました。
$reservation->customer()->associate($customer)
これは私と一緒に沈むのに時間がかかります!