Я хочу получить все комментарии, относящиеся к активным сообщениям.
У меня есть локальная область видимости на моей модели Posts
, похожая на эту.
public function scopePublic($query) {
return $query->whereHas('post', function ($q) {
$q->where('is_public', true);
});
}
Что отлично работает, но разрывается с PHP message: PHP Fatal error: Allowed memory size of X bytes exhausted
, как только я хочу преобразовать его в глобальную область видимости, подобную этой:
static::addGlobalScope('is_public', function (Builder $builder) {
return $builder->whereHas('post', function ($q) {
$q->where('is_public', true);
});
});
Моя конечная цель - чтобы все запросы комментариев только показывали публичные c комментарии, если я специально не спрашиваю не для.
Я прошел через несколько решений. Я попытался присоединиться к сообщению в комментариях, и я попытался добавить подвыбрать, не повезло.
$builder->addSelect(['is_public' => Post::select('is_private')
->whereColumn('id', 'comment.post_id')->limit(1)
]);
$builder->join('posts','posts.id','=','comments.post_id')
->where('comments.is_private', false);