Comment sélectionner count avec le générateur de requêtes fluent de Laravel?
voici ma requête en utilisant le constructeur de requête fluent.
$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();
<!-Comme vous pouvez le voir, je commande par un nombre de la table jointe. Cela fonctionne bien. Cependant, je veux que ce compte soit retourné avec mes sélections.
Voici la requête de ma suite brute qui fonctionne très bien.
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
Comment dois-je procéder avec ce select en utilisant le logiciel de création de requêtes de Laravel? Je suis conscient que je peux utiliser une requête SQL brute mais je voudrais éviter que si possible. Toute aide serait apprécié, merci d'avance!
45
demandé sur
Alex Naspo
2012-11-05 02:18:08
2 réponses
Vous pouvez utiliser un tableau dans le select() pour définir plus de colonnes et vous pouvez utiliser le DB::raw() là avec l'aliasing il aux followers. Devrait ressembler à ceci:
$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();
80
répondu
TLGreg
2012-11-30 02:29:30
$count = DB::table('category_issue')->count();
vous donnera le nombre d'éléments.
pour des informations plus détaillées, consultez Concepteur De Requêtes Fluent dans la section belle Laravel Documentation.
27
répondu
Sinan Eldem
2013-06-28 09:45:47