У меня есть модель публикации, модель пользователя и модель комментариев.Laravel 4 (.1), Eloquent и Relationships
Мои пользователи могут оставлять сообщения, а также могут комментировать сообщения.
Я хочу получать комментарии к сообщениям с сообщениями, но мои пользователи также могут блокировать пользователей.
Я имею в виду, если у активного пользователя есть другие заблокированные пользователи, и если в комментариях к сообщению есть комментарии, созданные этими пользователями, я должен их исключить.
И вот проблема.
$posts = $user()->posts()->get();
$blockedUserIdentifiers = (array) $viewer->getBlockedUserIdentifiers();
$posts->with(array('comments' => function($query) use ($blockedUserIdentifiers)
{
if(! empty($blockedUserIdentifiers))
$query->whereNotIn('user_id', $blockedUserIdentifiers);
}))->with('user'); // ? Ups?
Я хочу использовать отношения сообщений, а также комментарии, потому что работа здесь не закончена. Но если я использую foreach на массиве posts, будет очень странно продолжать и; если я использую foreach на объекте posts, мне тяжело продолжать.
Потому что я заблокировал состояние Пользователя, я тоже не могу загружать загрузку.
Какова наилучшая практика моего дела или, как я должен добавить $comments
объект результата в $posts
объект, такой как laravel?
Или как я могу продолжать добавлять результаты отношений к этому результату?
Благодарим за ответ. Я предпочитаю использовать запросы базы данных, где это возможно. Вы знаете, производительность имеет значение. –
Согласен, лучше сделать это в SQL. Я больше изменил свой ответ, чтобы показать, что здесь есть два решения. Вы пробовали первый, который добавляет еще одну связь с вашим 'with()' statment? – user3158900
Я боюсь, что такой способ приведет к комментариям без пользователей? –