Php 比较Silverstripe中的两个男性列表

Php 比较Silverstripe中的两个男性列表,php,oop,silverstripe,Php,Oop,Silverstripe,我想检查其中一个是否包含Silverstripe中另一个ManyManyList中包含的任何对象 BlogCategories用于对整个网站的内容进行分类: class ServicePage extends Page { private static $many_many = array( 'BlogCategories' => 'BlogCategory', 'BlogTags' => 'BlogTag' ); class CoursePage

我想检查其中一个是否包含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的所有课程页


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

最好的方法是使用获取共享标签和类别的ID,然后使用以下方法获取博客帖子:


这似乎只适用于包含标记和类别的博客文章,而我希望它适用于包含标记或类别的博客文章。您可以使用->sql()调试数据列表,例如
echo$sharedBlogPosts->sql()或更好。例如,PHPStorm有一个很好的特性,叫做“评估代码”(ALT-F8),我经常使用它来获取断点的特殊信息。
$tagIDs = $this->BlogTags()->getIDList();
$categoryIDs = $this->BlogCategories()->getIDList();

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