質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

1675閲覧

laravelのクエリビルダについて

kiritan

総合スコア30

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

1クリップ

投稿2018/02/10 01:51

編集2018/02/10 01:57

動作をするのですが、DB::rawを使って無理やり書いています。もっと綺麗に書く方法はありますか?
DBはmysqlを使っています。
クエリを2つにわけても良いのですが書き方がわかりません。
詳しい方がいましたら教えてください。よろしくお願いします。

testテーブルのid_1,id_2が同一でupdate_atが最新のもの以外のレコードを削除したいです。
主キーはautoインクリメントのidをもっています。

DB::table('test')->whereNotIn(DB::raw('(updated_at, id_1, id_2)' ), function($query){ $query->select(DB::raw('max(updated_at) as updated_at') ,'id_1', 'id_2') ->from(DB::raw('(select * from test) as temp')) ->groupBy('id_1','id_2'); }) ->delete();

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/02/10 04:00

ぱっとみ、raw メソッドを減らしたのかしら?
kiritan

2018/02/10 04:01

ありがとうございます!そうです。その通りでございます。
guest

回答1

0

ベストアンサー

querybuild化が面倒なのでSQLだけ

DELETE FROM test WHERE EXISTS ( SELECT 1 FROM (SELECT * FROM test) T -- ここは絶対に必要 WHERE T.id1 = test.id1 AND T.id2 = test.id2 AND T.updated_at > test.updated_at );

こんな感じかしら。

投稿2018/02/10 04:19

編集2018/02/10 04:21
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kiritan

2018/02/10 04:32

ありがとうござます‼︎ エレガントなクエリですね。 すごく勉強になりました。
kiritan

2018/02/10 08:44

ララベルでもシンプルに書くことができ動作もしました!ありがとうござます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問