概要
EloquentのsetRelationメソッドを初めて知ったかつ便利そうだと思ったので共有
どういうものか
$hoge = HogeModel::find(1);
$huga = new HugaModel();
$huga->text = 'aaaaa';
$hoge->setRelation('huga',$huga);
//アロー演算子で取り出せる
$hoge->huga;
//'aaaaa'
存在しないリレーションも付け足せます。
Modelに定義してないリレーション
ただ取り出せるだけなので、setRelation()
してsave()
してもリレーション先のidを持っていないのでエラーになります。
つまり上の例だと、$hugaオブジェクトをsetRelation()
で突っ込んだとしても
$hugaオブジェクトにhoge_idは存在しません。
$hoge->huga->hoge_id = $hoge->id;
でidを与えた後にsave()
であれば保存出来ます。
$hoge = HogeModel::find(1);
$huga = new HugaModel();
$huga->text = 'aaaaa';
$hoge->setRelation('huga',$huga);
$hoge->huga->hoge_id = $hoge->id;
$hoge->huga->save();
viewや処理の為、動的に突っ込みたい時に使え、、、そう...?うーん