Ron*_*ott 1 doctrine mariadb symfony doctrine-orm
我写了以下 Dotrine 查询:
$query3 = $this->entityManager
->createQueryBuilder()
->select('t.textDomain , t.translationKey , t.languageIso , t.translationDate')
->from(
'AMDatabase\Entity\TheVerse\TranslationsMasters',
't'
)
->groupBy('t.languageIso')
->orderBy(
't.translationDate',
'DESC'
);
// the values of $key2 array are:
// en-US
// es-MX
// es-PR
foreach( $translation AS $key2=>$value2 ) {
if ( $key2 == 'en-US' ) {
$query3
->orWhere(
$query3->expr()
->like(
't.languageIso',
':languageIso'
)
)
->setParameter(
'languageIso',
$key2
);
}
}
$result3 = $query3->getQuery()
->getArrayResult();
Run Code Online (Sandbox Code Playgroud)
如何同时查询搜索所有 3 种语言的 ISO ?
我认为通过使用“orWhere”它会不断向查询添加条件(其中 en-US 仍会产生匹配)。
一直无法按照orWhere我认为应该的方式运行。您可能需要Where在开始定义中添加一个,然后才能添加orWhere以后的定义。您可能必须使用orX这样的嵌套语句:
$query3->andWhere($query3->expr()->orX(
$query3->expr()->like('t.languageIso', $query3->expr()->literal('en-US')),
$query3->expr()->like('t.languageIso', $query3->expr()->literal('es-MX')),
$query3->expr()->like('t.languageIso', $query3->expr()->literal('es-PR'))
));
Run Code Online (Sandbox Code Playgroud)
您不能通过循环来开发该语句。但是,由于您只有三个标准,因此很容易写出来。
| 归档时间: |
|
| 查看次数: |
1295 次 |
| 最近记录: |