[解決済み] Laravel Fluent Query Builder サブクエリによる結合
2023-04-14 22:04:13
質問
何時間も研究した後、まだDB::selectを使っていますが、この質問をしなければなりません。なぜなら、私は自分のコンピュータを捨てようとしているからです;)。
私はユーザーの最後の入力を取得したいです(タイムスタンプに基づく)。私は生のSQLでこれを行うことができます。
SELECT c.*, p.*
FROM users c INNER JOIN
(
SELECT user_id,
MAX(created_at) MaxDate
FROM `catch-text`
GROUP BY user_id
) MaxDates ON c.id = MaxDates.user_id INNER JOIN
`catch-text` p ON MaxDates.user_id = p.user_id
AND MaxDates.MaxDate = p.created_at
私はこのクエリを他の投稿から入手しました ここで を参照してください。
Laravelのfluent query builderでこれを行うためにすべてを試しましたが、成功しませんでした。
マニュアルにはできると書いてあるのですが。
DB::table('users')
->join('contacts', function($join)
{
$join->on('users.id', '=', 'contacts.user_id')->orOn(...);
})
->get();
しかし、それは私がそこにサブクエリを使用することができるか分からないので、あまり助けになりませんか? 誰か私の一日を照らすことができますか?
どのように解決するには?
同じ問題を検索して、絶望的にここに到着したすべてのあなたのために、OK。私はあなたが私より速くこれを見つけることを望みます;O.
これが解決方法です。JoostKはgithubで、"joinの最初の引数は結合するテーブル(またはデータ)であると教えてくれました。そして彼は正しかった。
以下はそのコードです。テーブルも名前も違いますが、イメージはつかめると思います。これは
DB::table('users')
->select('first_name', 'TotalCatches.*')
->join(DB::raw('(SELECT user_id, COUNT(user_id) TotalCatch,
DATEDIFF(NOW(), MIN(created_at)) Days,
COUNT(user_id)/DATEDIFF(NOW(), MIN(created_at))
CatchesPerDay FROM `catch-text` GROUP BY user_id)
TotalCatches'),
function($join)
{
$join->on('users.id', '=', 'TotalCatches.user_id');
})
->orderBy('TotalCatches.CatchesPerDay', 'DESC')
->get();
関連
-
[解決済み] クエリビルダーのSQLクエリを文字列として出力するにはどうすればよいですか?
-
[解決済み] Laravelで「キャッシュのクリアに失敗しました。適切なパーミッションがあることを確認してください"
-
[解決済み] Laravelで非キーカラムのフィールドに明確な値を取得する方法は?
-
[解決済み] パブリックディレクトリを取得するには?
-
[解決済み] Laravel Eloquent - 1つの行を取得する
-
[解決済み] LaravelではbelongsToとhasOneのどちらを使うべきですか?
-
[解決済み] LaravelのBladeテンプレートで、レイアウトに変数を渡すには?
-
[解決済み] Laravel コントローラ サブフォルダ ルーティング
-
[解決済み] Laravel Eloquentのリミットとオフセット
-
[解決済み] laravel Unable to prepare route ... for serialization. クロージャを使う
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] SQL結合:1対多の関係で最後のレコードを選択する
-
[解決済み] Laravelで「キャッシュのクリアに失敗しました。適切なパーミッションがあることを確認してください"
-
[解決済み] E: パッケージ 'mysql-client' は docker compose を使った php-fpm イメージのビルドでインストール候補がない
-
[解決済み] Laravel Migrationsから特定のファイルをMigrateする
-
[解決済み] LaravelではbelongsToとhasOneのどちらを使うべきですか?
-
[解決済み] LaravelのBladeテンプレートで、レイアウトに変数を渡すには?
-
[解決済み] Laravel コントローラ サブフォルダ ルーティング
-
[解決済み] Laravel Eloquentのリミットとオフセット
-
[解決済み] Laravel 多対多のリレーションシップの保存/更新
-
[解決済み] laravel Unable to prepare route ... for serialization. クロージャを使う