Laravelで次の関係を設定しています。
OrderStatus Model
- hasMany('Order')
Order Model
- 'belongsTo('OrderStatus');
データベースはorders
テーブルとorder_statuses
テーブルで設定されています。 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 docs)の「関連モデルのアタッチ」と「モデルの関連付け」について読みましたが、これらが自分のユースケースに適合するかどうかわかりません。問題は持っているのは、子モデル(注文)を直接操作して、それを親に設定しようとしていることです。このための関数はありますか?
確かにこれを行うことができます:
_$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