Domanda Come selezionare il conto con il fluent query builder di Laravel?


Ecco la mia query usando 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();

Come puoi vedere, sto ordinando in base a un conteggio dalla tabella unita. Funziona bene Tuttavia, voglio che questo conteggio venga restituito con le mie selezioni.

Ecco la mia query sequel raw che funziona bene.

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

Come andrei su questa selezione usando il fluent query builder di Laravel? Sono consapevole di poter utilizzare una query sql raw ma vorrei evitarlo se possibile. Qualsiasi aiuto sarebbe apprezzato, grazie in anticipo!


44
2017-11-04 22:18


origine


risposte:


È possibile utilizzare una matrice in select () per definire più colonne e utilizzare DB :: raw () lì con aliasing ai follower. Dovrebbe assomigliare a questo:

$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();

79
2017-11-30 02:29



$count = DB::table('category_issue')->count();

ti darà il numero di oggetti.

Per un controllo più dettagliato delle informazioni Fluent Query Builder sezione in bella documentazione di Laravel.


27
2017-11-05 11:44