我想检查一个 ManyManyList 是否包含 Silverstripe 中另一个 ManyManyList 中包含的任何对象。

BlogCategories 用于对整个网站的内容进行分类:

class ServicePage extends Page {

  private static $many_many = array(
      'BlogCategories' => 'BlogCategory',
      'BlogTags' => 'BlogTag'
  );

class CoursePage extends Page {

  private static $many_many = array(
      'BlogCategories' => 'BlogCategory',
      'BlogTags' => 'BlogTag'
  );

在 ServicePage 上,我想显示与 ServicePage 共享 BlogCategory 或 BlogTag 的所有 CoursePage。

实现这一目标的最佳方法是什么?

最佳答案

最好是使用 ->getIDList() 获取共享标签和类别的 ID,然后使用 ->filterAny() 获取博客帖子:

$tagIDs = $this->BlogTags()->getIDList();
$categoryIDs = $this->BlogCategories()->getIDList();

$sharedBlogPosts = BlogPost::get()->filterAny([
    'Tags.ID' => $tagIDs
    'Categories.ID' => $categoryIDs
]);

关于php - 比较 Silverstripe 中的两个 ManyManyList,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34846053/

10-11 12:52