質問: 最新の日付だけにフラグを立てたいです。 laravelを利用してテーブルを設計しています。 | id | name | flg | create_at | | --- | --- | --- | --- | | 1 | 太郎 | 9 | 2020-07-30 | | 2 | 太郎 | 4 | 2020-06-20 | | 3 | 花子 | 9 | 2020-07-30 | | 4 | 和樹 | 9 | 2020-07-30 | | 5 | 花子 | 7 | 2020-07-20 | | 6 | 桃子 | 9 | 2020-07-20 | 上記のようなテーブルの、一番大きなflgの数値だけ、値を加算させて行きたいと思っています。 例 | id | name | flg | create_at | | --- | --- | --- | --- | | 1 | 太郎 | 10 | 2020-07-31 | | 2 | 太郎 | 4 | 2020-06-20 | | 3 | 花子 | 10 | 2020-07-31 | | 4 | 和樹 | 10 | 2020-07-31 | | 5 | 花子 | 7 | 2020-07-20 | | 6 | 桃子 | 9 | 2020-07-25 | | 7 | 鉄男 | 10 | 2020-07-31 | | 8 | 桃子 | 10 | 2020-07-31 | 名前が重複するレコードも存在しますが、一番大きなflg(ここであれば9~10)のみを更新させていき、他のレコードはそのままにしておきたいです。 同様に、一番大きなflgで自分の名前が存在しなければ、一番大きなflgを立ててCreateする。という処理を行いたいです。(id:7鉄男、id:8桃子) 現状はupdateOrCreateを使っています。 しかし、このままだと一番大きなflg以外の太郎(id:2)、花子(id:6)レコードも一緒にupdateされてしまいます。 太郎という名前かつ最新の日付を取得して、そこにだけupdateをかけたいのですが Eloquentを用いた絞り込み方をご質問させてください。
回答: > > Eloquentを用いた絞り込み方をご質問させてください。 > > > まず`latest()`で最新のものから降順で並び替え 太郎という名前で抽出を行いたいので、`where()`を使用して`first();`で取ってくる方法でいかがでしょうか?