Laravel 5

withCount et morphMany

Avatar de VincentPIEPLU
VincentPIEPLU

Bonsoir la communauté,

J'ai une galère avec une requête. Celle-ci fonctionne :

$top_properties = $professional->properties()->withCount('view_info')->where(function ($query) {
    $this->getDate($query);
})->get();

Le modèle Property :

 public function view_info()
{
    return $this->morphMany(Views::class, 'viewable');
}

Et je vois bien dans la collection, l'attribut :

#attributes: array:16 [▼ "id" => 1 "user_id" => 1 "professional_id" => 1 "type_id" => 4 "estate_id" => 8 "enable" => 1 "name" => "{"fr":"Maison \u00e0 vendre \u00e0 St Malo"}" "description" => "{"fr":"Tr\u00e8s belle maison"}" "address" => "rue de saint malo" "city_id" => 3 "latitude" => "48.65040000" "longitude" => "-2.00060000" "created_at" => "2019-12-11 14:29:07" "updated_at" => "2019-12-11 14:29:07" "deleted_at" => null "view_info_count" => 922 ]

Maintenant, je souhaite trier les résultats, j'ai testé ainsi :

$top_properties = $professional->properties()->withCount('view_info')->where(function ($query) {
   $this->getDate($query);
})->orderBy('view_info_count desc')->get();

Mais ça me retourne une erreur et je ne trouve pas la solution.

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'view_info_count desc' in 'order clause' (SQL: select properties., (select count() from views where properties.id = views.viewable_id and views.viewable_type = App\Model\Property) as view_info_count from properties where properties.professional_id = 1 and properties.professional_id is not null and properties.deleted_at is null order by view_info_count desc asc)

Merci de votre aide.

Posté il y a 6 mois
Avatar de bestmomo
bestmomo

Salut,

Essaie comme ça :

...
})->orderBy('view_info_count', 'desc')->get();
Posté il y a 6 mois
Avatar de VincentPIEPLU
VincentPIEPLU

Bien vu. Merci pour cette correction d'erreur bête ;)

Posté il y a 6 mois

Vous ne pouvez pas répondre à ce sujet.