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