$query 组合嵌套约束
$query combine nested constraints
我有以下查询:
$query = $this->createQuery();
$constraint = [];
$constraint[] = $query->like('title', '%' . $searchTerm . '%');
$constraint[] = $query->like('description', '%' . $searchTerm . '%');
$query->matching($query->logicalOr($constraint));
这个查询有效。现在我有一个新的约束,我想用 locigalAnd
添加它。我该怎么做?
新约束是:
$constraint[] = $query->contains('categories', $myCategory);
如何组合它们?
我喜欢这样说:
$q = $this->createQuery();
$titleOrDescriptionConstraints = $q->logicalOr(
[
$q->like('title', '%' . $searchTerm . '%'),
$q->like('description', '%' . $searchTerm . '%'),
]
);
$constraints = $q->logicalAnd(
[
$titleOrDescriptionConstraints,
$q->contains('categories', $myCategory),
]
);
$res = $q->matching($constraints);
但这只是风格问题。
如果你更喜欢,当然可以用一个表情来强制。
请记住,您可以将单个表达式的数组传递给 ->logicalAnd() 和 -Or() - 函数,并且您可以根据需要将它们嵌套到任意深度。
我有以下查询:
$query = $this->createQuery();
$constraint = [];
$constraint[] = $query->like('title', '%' . $searchTerm . '%');
$constraint[] = $query->like('description', '%' . $searchTerm . '%');
$query->matching($query->logicalOr($constraint));
这个查询有效。现在我有一个新的约束,我想用 locigalAnd
添加它。我该怎么做?
新约束是:
$constraint[] = $query->contains('categories', $myCategory);
如何组合它们?
我喜欢这样说:
$q = $this->createQuery();
$titleOrDescriptionConstraints = $q->logicalOr(
[
$q->like('title', '%' . $searchTerm . '%'),
$q->like('description', '%' . $searchTerm . '%'),
]
);
$constraints = $q->logicalAnd(
[
$titleOrDescriptionConstraints,
$q->contains('categories', $myCategory),
]
);
$res = $q->matching($constraints);
但这只是风格问题。 如果你更喜欢,当然可以用一个表情来强制。
请记住,您可以将单个表达式的数组传递给 ->logicalAnd() 和 -Or() - 函数,并且您可以根据需要将它们嵌套到任意深度。