laravel hasMany polymorphi c отношение в предложении where - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь выбрать изображение с наибольшим количеством лайков в указанной категории c из моей базы данных. У меня есть таблица базы данных, в которой хранятся картинки, и таблица, в которой хранятся лайки. Таблица изображений связана с симпатичной таблицей через отношения полиморфий hasMany c.

Как модель:

    public function likeable() 
    {
        return $this->morphTo();
    }

Модель изображения:

 public function likes()
 {
     return $this->morphMany('App\Like', 'likeable');
 }

Домашний контроллер:

Picture::where('picture_type', 'food')->orderBy(likes(), 'desc')->first();

Likeable Migration:

    public function up()
{
    Schema::create('likeable', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('user_id');
        $table->integer('likeable_id');
        $table->string('likeable_type');
        $table->timestamps();
    });
}

Пока что вышеприведенная строка кода в моем домашнем контроллере возвращает ошибку. Из того, что я понимаю, метод лайков должен вызываться на конкретном c экземпляре. Тем не менее, я не знаю, как реализовать это все время, сохраняя мое условие where.

Спасибо за вашу помощь.

Ответы [ 2 ]

1 голос
/ 16 апреля 2020

Я предполагаю, что вы хотите заказать фотографии по наибольшему количеству лайков.

В этом случае вам нужно что-то вроде этого:

Picture::withCount('likes')->where('picture_type', 'food')->orderBy('likes_count', 'desc')->first(); 
0 голосов
/ 16 апреля 2020

Просто используйте имя столбца таблицы вместо likes:

Picture::where('picture_type', 'food')->orderBy('likeable', 'desc')->first();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...