我的存储库中有此查询:
public function fetchAccountRecord(int $guideOption, string $fact, int $adapter = NULL) {
$query = $this->createQuery();
$query->getQuerySettings()->setIgnoreEnableFields(TRUE);
$query->getQuerySettings()->setEnableFieldsToBeIgnored(['starttime','endtime']);
$query->matching(
$query->logicalAnd(
[
$query->equals('guide_option', $guideOption),
$query->equals('fact', $fact)
]
)
);
return $query;
}
如果存在$adapter
,我如何为它添加一个附加约束?所以我尝试添加
$adapter ? $query->equals('adapter', $adapter) : NULL
但不起作用。
您可以利用QueryInterface::logicalAnd()
也接受一系列约束的事实。然后,您有条件地扩展该数组:
$query = $this->createQuery();
$query->getQuerySettings()->setIgnoreEnableFields(TRUE);
$query->getQuerySettings()->setEnableFieldsToBeIgnored(['starttime','endtime']);
$constraints = [
$query->equals('guide_option', $guideOption),
$query->equals('fact', $fact),
];
if ($adapter) {
$constraints[] = $query->equals('adapter', $adapter);
}
$query->matching($query->logicalAnd($constraints));
您可以执行以下操作:
$constrains= [];
$constrains[] = $query->equals('guide_option', $guideOption);
$constrains[] = $query->equals('fact', $fact);
if($adapter) {
$constrains[] = $query->equals('adapter', $adapter);
}
$query->matching($query->logicalAnd($constrains);
尝试做类似的事情:
public function fetchAccountRecord(int $guideOption, string $fact, int $adapter = NULL) {
$query = $this->createQuery();
$query->getQuerySettings()->setIgnoreEnableFields(TRUE);
$query->getQuerySettings()->setEnableFieldsToBeIgnored(['starttime','endtime']);
$constraints[]
if($adapter) {
$constraints[] = $query->equals('adapter', $adapter);
}
$constraints[] = $query->logicalAnd(
$query->equals('guide_option', $guideOption),
$query->equals('fact', $fact),
);
$query->matching($query->logicalAnd($constraints));
return $query;
}