1

i ont une requête comme ceLaravel constructeur de requête comment écrire orderBy requête ayant CAST et REPLACE fonctions

SELECT area FROM history_cost_estimation ORDER BY CAST(REPLACE(area, ' ', '') AS INT)

je suis en train de traduire cette requête en générateur de requêtes Laravel mais j'ai eu beaucoup d'erreurs

ceci est mon essai

App\Models\HistoryCostEstimation::orderBy("CAST(REPLACE(area, ' ', '') AS INT)",'asc')->count(); 

et voici l'échantillon de l'erreur

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'as `)` asc' at line 1 (SQL: select count(*) as aggregate from `engineertec`.`history_cost_estimation` order by `CAST(REPLACE(area,` as `)` asc) 

Répondre

1

J'utiliser la façade DB et utiliser mysql brut

assurez-vous d'ajouter la façade DB au contrôleur ou partout où vous utilisez ce

use Illuminate\Support\Facades\DB; 

puis faire

DB::table('history_cost_estimation')->select('area')->orderBy(DB::raw('CAST(REPLACE(area, ' ', ''), 'INT')));