Fluent Query Builderを使用したクエリを次に示します。
$query = DB::table('category_issue')
->select('issues.*')
->where('category_id', '=', 1)
->join('issues', 'category_issue.issue_id', '=', 'issues.id')
->left_join('issue_subscriptions', 'issues.id', '=', 'issue_subscriptions.issue_id')
->group_by('issues.id')
->order_by(DB::raw('COUNT(issue_subscriptions.issue_id)'), 'desc')
->get();
ご覧のとおり、私は結合されたテーブルからカウントで注文しています。これは正常に機能しています。ただし、このカウントを選択とともに返す必要があります。
これが、正常に機能する私の生の続編クエリです。
Select issues.*, COUNT(issue_subscriptions.issue_id) AS followers
FROM category_issue JOIN Issues ON category_issue.issue_id = issues.id
LEFT JOIN issue_subscriptions ON issues.id = issue_subscriptions.issue_id
WHERE category_issue.category_id = 1
GROUP BY issues.id
ORDER BY followers DESC
Laravelの流queryなクエリビルダーを使用してこの選択についてどうすればよいですか?生のSQLクエリを使用できることは承知していますが、可能であればそれを避けたいと思います。どんな助けでも感謝します、前もって感謝します!
Select()で配列を使用してより多くの列を定義し、DB :: raw()を使用してフォロワーにエイリアスを作成できます。次のようになります。
$query = DB::table('category_issue')
->select(array('issues.*', DB::raw('COUNT(issue_subscriptions.issue_id) as followers')))
->where('category_id', '=', 1)
->join('issues', 'category_issue.issue_id', '=', 'issues.id')
->left_join('issue_subscriptions', 'issues.id', '=', 'issue_subscriptions.issue_id')
->group_by('issues.id')
->order_by('followers', 'desc')
->get();
$count = DB::table('category_issue')->count();
アイテムの数が表示されます。
詳細については、Fluent Query Builderセクションの beautiful Laravel Documentation を参照してください。