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 Réponses :
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();
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();
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.
$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();
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();
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é?