1
votes

Traduire une requête MySql dans un générateur de requêtes Laravel

SELECT apartment_id, COUNT(created_at) AS n_view,
DATE_FORMAT(created_at, '%Y-%m-%d') as day_view
FROM views
WHERE apartment_id=36 GROUP BY day_view
ORDER BY COUNT(created_at) DESC
how can I Translate this  MySql query in a Laravel query builder ?

4 commentaires

Convertissez votre SQL en Laravel Builder avec Orator


ça ne marche pas


@folipso qu'est-ce qui ne fonctionne pas exactement? Avez-vous des erreurs? Pas le résultat attendu?


Qu'est-ce que tu as essayé jusque-là? Où es-tu coincé?


4 Réponses :


0
votes

Vous pouvez faire comme ça en utilisant App \ Views; utiliser DB;

Views::select('apartment_id', DB::raw("COUNT(created_at) as n_view") ,DB::raw("DATE_FORMAT(created_at, '%Y-%m-%d') as day_view"))->where('apartment_id' ,36)->orderBy('n_view', 'desc')->get();

0 commentaires

0
votes
DB::table('views')
    ->selectRaw("apartment_id, COUNT(created_at) AS n_view, DATE_FORMAT(created_at, '%Y-%m-%d') as day_view")
    ->where("apartment_id", "=", "36")
    ->groupBy('day_view')
    ->orderBy(n_view, "DESC")
    ->get();

2 commentaires

Après la dernière modification (en supprimant quelques guillemets autour de n_view ), cela provoquera une erreur de syntaxe. De plus, veuillez ajouter une explication à votre réponse afin que d'autres puissent en tirer des leçons


Bien que ce code puisse résoudre le problème du PO, il est préférable d'inclure une explication sur la façon dont votre code résout le problème du PO. De cette façon, les futurs visiteurs peuvent apprendre de votre publication et l'appliquer à leur propre code. SO n'est pas un service de codage, mais une ressource de connaissances. En outre, les réponses complètes et de haute qualité sont plus susceptibles d'être votées. Ces fonctionnalités, ainsi que l'exigence que tous les messages soient autonomes, sont quelques-unes des forces de SO en tant que plate-forme, qui le différencie des forums. Vous pouvez modifier pour ajouter des informations supplémentaires et / ou pour compléter vos explications avec la documentation source.



0
votes
$data = $this->views;
$data = $data->select(
    "apartment_id",
    DB::raw("COUNT(created_at) AS n_view"),
    DB::raw("DATE_FORMAT(created_at, '%Y-%m-%d') as day_view")
);
$data = $data->where("apartment_id", 36);
$data = $data->groupBy("day_view");
$data = $data->orderBy("created_at", "desc");
$data = $data->get();

0 commentaires

0
votes

Consultez la documentation Laravel sur générateur de requêtes et consultez les exemples, vous pouvez facilement convertir votre SQL au générateur de requêtes:

use Illuminate\Support\Facades\DB;

DB::table('views')
    ->selectRaw("apartment_id, COUNT(created_at) AS n_view, DATE_FORMAT(created_at, '%Y-%m-%d') as day_view")
    ->where('apartment_id', '=', 36)
    ->groupBy('day_view')
    ->orderByRaw('COUNT(created_at) DESC')
    ->get();


0 commentaires