我在MySQL查詢語法問題。我使用的地方,我想通過函數mySQL語法與OR
protected function generateAlias($tag = null)
{
return '___' . $tag . '_' . $this->aliasCounter++;
}
public function filterKnownUsers(\Tuxie\Bundle\TuxieBundle\Entity\User $user, $addMyUser = false)
{
$alias = $this->generateAlias();
$query = "SELECT {$alias}_u2.userId FROM Tuxie\\Bundle\\TuxieBundle\\Entity\\TicketUser {$alias}_u1
JOIN Tuxie\\Bundle\\TuxieBundle\\Entity\\TicketUser {$alias}_u2 WITH {$alias}_u1.ticketId = {$alias}_u2.ticketId
WHERE {$alias}_u1.userId = :{$alias}_user";
if($addMyUser === true) {
$this->where("root.userId IN ($query) OR ({$alias}_u2.userId) ");
}
else {
$this->where("root.userId IN ($query)");
}
$this->setParameter("{$alias}_user", $user);
return $this;
}
過濾knownusers的Symfony2的所以如果在機能的研究第二個參數是真正的過濾器應使用或聲明,給我唯一的實際用戶。可惜的是我得到語法錯誤
[2/2] QueryException: [Syntax Error] line 0, col 354: Error: Expected =, <, <=, <>, >, >=, !=, got ')'
[1/2] QueryException: SELECT root FROM Tuxie\Bundle\TuxieBundle\Entity\User root WHERE (root.email IS NOT NULL AND (root.userId IN (SELECT ____0_u2.userId FROM Tuxie\Bundle\TuxieBundle\Entity\TicketUser ____0_u1 JOIN Tuxie\Bundle\TuxieBundle\Entity\TicketUser ____0_u2 WITH ____0_u1.ticketId = ____0_u2.ticketId WHERE ____0_u1.userId = :____0_user) OR (____0_u2.userId))) AND root.clientId IS NOT NULL
else {
$this->where("root.userId IN ($query)");
}
工作正常。所以問題已經到位
$this->where("root.userId IN ($query) OR ({$alias}_u2.userId) ");
關於正確的語法是什麼的任何想法?
嗨傑拉德,你怎麼比較的東西的價值是什麼意思?是否有可能簡單...或(我的實際用戶的一些語法) – Filip