SilverStripe ORM где пункт об отношениях и его количестве - PullRequest
3 голосов
/ 19 июня 2019

Я работаю над проектом SilverStripe.Теперь я запрашиваю данные.То, что я пытаюсь сделать, это получить все записи, где выполняется условие where на количество его отношений.

Пожалуйста, посмотрите на этот запрос

NewsPage::get();

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

$newPage->BlogPosts()

Теперь я пытаюсь получить все страницы новостей, которые имеютболее одного сообщения в блоге.

Что-то вроде этого произвольного кода

$newPage->where('BlogPosts.Count', '>', 1)->get();

Так, как мне этого добиться, пожалуйста?

1 Ответ

4 голосов
/ 20 июня 2019

В SilverStripe 4 мы можем фильтровать счетчик отношений $has_many или $many_many следующим образом:

NewsPage::get()->filter([
    'BlogPosts.Count():GreaterThan' => 1
]);

Чтобы это работало NewsPage должен иметь отношение $has_many или $many_many к BlogPost, называемое BlogPosts.

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