Slide 13
Slide 13 text
13
②コントリビュート編
問題:Model::push() の標準実装がループで Model::save() を呼んでおりN+1クエリになっていた
$user->push();
// INSERT INTO UserItem (userId, itemId, amount) VALUES ('user1', 1, 2);
// INSERT INTO UserItem (userId, itemId, amount) VALUES ('user1', 2, 5);
// UPDATE UserItem SET amount = 10 WHERE userId = 'user1' AND itemId = 3;
// UPDATE UserItem SET amount = 10 WHERE userId = 'user1' AND itemId = 4;
対応:複数モデルを一括で保存するよう Model::push() の中身をオーバーライド
$user->push();
// INSERT INTO UserItem (userId, itemId, amount) VALUES ('user1', 1, 2), ('user1', 2, 5);
// UPDATE UserItem SET amount = 10 WHERE userId = 'user1' AND itemId IN (3, 4);