Laravel 5

withCount et morphMany

  • Avatar de VincentPIEPLU
    Membre depuis :
    04/04/2015
    Messages :
    245

    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.

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2632

    Salut,

    Essaie comme ça :

    ...
    })->orderBy('view_info_count', 'desc')->get();
  • Avatar de VincentPIEPLU
    Membre depuis :
    04/04/2015
    Messages :
    245

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

Vous ne pouvez pas répondre à ce sujet.