■前提条件
こんなリレーションがあったとして
members articles
id -----┐ id
m_flg └------- member_id
a_flg
membersテーブルとarticlesテーブルを同時にupdateしたい場合、save()を使うと親テーブルと子テーブルで2回save()をしなければならない。
$articles = Article::findOrFail(1);
$articles->a_flg = 1;
$articles->save();
$member = $articles->member;
$member->m_flg = 1;
$member->save();
しかし、put()を使うと同時に更新できる。
$article = Article::findOrFail(1);
$article->a_flg = 1;
$article->member->m_flg = 1;
$article->push();
これはarticlesテーブルからmembersテーブルのbelongsTo()のケースだけど、membersテーブルからarticlesテーブルのhasMany()の場合はこのようにする。
$member = Member::findOrFail(1);
$member->m_flg = 1;
foreach($member->articles as $article){
$article->a_flg = 1;
}
$member->push();