Как использовать метод области с отношением ownToMany в модели Laravel - PullRequest
0 голосов
/ 26 июня 2019

У меня есть метод scope в моей модели, который содержит отношение ownToMany;Я застрял в том, что как я могу отфильтровать несколько данных, используя метод области, который я использую в другом месте.Мой код:

CoversAlbum.php

public function genres()                                                                
{  
    return $this->belongsToMany(CoversGenre::class,'covers_track_genres'); 
}  

CoversGenre.php

public function albums()
{
    return $this->belongsToMany(CoversAlbum::class,'covers_album_genres');
}     

Метод области действия в CoversAlbum.php

public function scopeActive($query)
{
    return $query->whereHas('genres', function ($q) {
        $q->where('is_present', true)();
    });
}

Iхочу, чтобы вся опора covers_genre_id присутствовала.Пожалуйста, предложите мне, как я могу этого достичь.Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Вы можете использовать wherePivot метод

public function scopeActive($query)
{
    return $this->genres()->wherePivot('is_present', true);
}
0 голосов
/ 26 июня 2019

Вы можете использовать метод has:

public function scopeActive($query)
{
    return $query->has('genres');
}

Затем вы можете сделать это так:

CoversAlbum::active()->get();

Это вернет список CoversAlbum, который имеет вхотя бы один CovertsGenre.

Для получения дополнительной информации: посмотрите в Querying Relation Existence в https://laravel.com/docs/5.8/eloquent-relationships#querying-relations

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...