如何使用对象列表作为关系对象的条件
How to use object listing for condition on relation object
这个问题以前可能有人问过,但我找不到满意的答案。让我们有一个名为 Product 的对象与 Tags 有关系。因此,如果我们需要为特定标签查找产品,因为 pimcore 对象列表直接在 main table/view 上工作,它将关系存储为单个列中的逗号分隔值。所以别人只推荐LIKE搜索解决方案
$entries ->setCondition("Tags LIKE " . $entries->quote("%".$tagId."%"));
但我认为,这个解决方案有一个更大的问题如果一些产品存储标签 ID 像 00,111,112,189 并且我们想要搜索标签 id = 11 它会 return 产品的不受欢迎的标签 ID 如 111, 112 记录也是。
一种完全忽略 pimcore 对象并使用 Zend DB 调用对象_[PRODUCCLASSID] 和 object_relations_[PRODUCCLASSID] 视图的解决方案。
如果存在仅使用 Pimcore 对象解决问题的任何其他解决方案 API。
据我所知,关系是这样保存的:,00,111,112,189,。所以在开头和结尾用逗号。
这使您能够像这样使用您的条件:
$entries ->setCondition("Tags LIKE " . $entries->quote("%,".$tagId.",%"));
注意 % 符号前后的逗号。
根据数据量,最好使用 sub-select:
$entries ->setCondition("o_id IN (SELECT src_id FROM object_relation_XXX where dest_id = $tagId AND fieldname = 'Tags')");
... 将 XXX
替换为 class 的 ID。
我知道这已经过时了,但我想在我苦苦挣扎但找不到任何相关内容的地方添加一些内容。
如果你有一个 Multihref,你需要添加你关联的对象类型。如果是对象(如我的情况),它应该看起来像
"%,object|".$relationId.",%"
也许这可以节省一些时间 :)
这个问题以前可能有人问过,但我找不到满意的答案。让我们有一个名为 Product 的对象与 Tags 有关系。因此,如果我们需要为特定标签查找产品,因为 pimcore 对象列表直接在 main table/view 上工作,它将关系存储为单个列中的逗号分隔值。所以别人只推荐LIKE搜索解决方案
$entries ->setCondition("Tags LIKE " . $entries->quote("%".$tagId."%"));
但我认为,这个解决方案有一个更大的问题如果一些产品存储标签 ID 像 00,111,112,189 并且我们想要搜索标签 id = 11 它会 return 产品的不受欢迎的标签 ID 如 111, 112 记录也是。
一种完全忽略 pimcore 对象并使用 Zend DB 调用对象_[PRODUCCLASSID] 和 object_relations_[PRODUCCLASSID] 视图的解决方案。
如果存在仅使用 Pimcore 对象解决问题的任何其他解决方案 API。
据我所知,关系是这样保存的:,00,111,112,189,。所以在开头和结尾用逗号。
这使您能够像这样使用您的条件:
$entries ->setCondition("Tags LIKE " . $entries->quote("%,".$tagId.",%"));
注意 % 符号前后的逗号。
根据数据量,最好使用 sub-select:
$entries ->setCondition("o_id IN (SELECT src_id FROM object_relation_XXX where dest_id = $tagId AND fieldname = 'Tags')");
... 将 XXX
替换为 class 的 ID。
我知道这已经过时了,但我想在我苦苦挣扎但找不到任何相关内容的地方添加一些内容。 如果你有一个 Multihref,你需要添加你关联的对象类型。如果是对象(如我的情况),它应该看起来像
"%,object|".$relationId.",%"
也许这可以节省一些时间 :)