2017-07-18 1 views
0

En utilisant Laravel, pour ordonner par une colonne ascendante, mais 0 pour venir en dernier. C'est comme ça que nous faisons en SQL normal:Laravel: Trie une colonne ASC mais 0 vient la dernière

SELECT * FROM your_table ORDER BY your_field = 0, your_field; 

Je veux savoir comment faire à Laravel.

Un grand merci

+0

Avez-vous essayez d'utiliser 'DB :: raw'? –

Répondre

0

Vous pouvez essayer la fonction OrderByRaw.

par exemple:

$data = new YourModel(); 
$data = $data->orderByRaw('your_field = 0', 'ASC', 'your_field')->get(); 
+0

Je pense que votre code ne triera pas correctement l'entier. Cela devrait être comme ceci: '$ data = new YourModel();' '$ données = $ data-> orderByRaw ('votre_champ = 0, votre_champ ASC') -> get();' –

0

Je pense que nous pouvons utiliser DB::raw, donc peut-être l'utilisation.

DB::select(DB::raw("SELECT * FROM your_table ORDER BY your_field = 0, your_field")); 
+0

Merci pour votre répondre. Est-ce que Laravel a construit une requête pour cela? –

+0

Oui, bien sûr, vous pouvez consulter cette documentation [ici] (https://laravel.com/docs/5.4/queries#raw-expressions) –

+0

Merci de partager la documentation. Je suis à la recherche d'une solution qui n'utilise pas RAW. Merci quand même. –