[英]Syntax Error: line 0, col 152: Error: Expected =, <, <=, <>, >, >=, !=, got 'BETWEEN'
[英]Symfony 3.0 with Doctrine query builder: [Syntax Error] line 0, col 7: Error: Expected known function, got 'WHERE'
我在使用查詢生成器時遇到一些問題。 首先,我有這個存儲庫:
<?php
namespace AppBundle\Entity;
use AppBundle\Entity\Product;
use Doctrine\ORM\EntityRepository;
class UserRepository extends EntityRepository
{
public function register($username,$password,$email)
{
//A Generic return Object
$status=array('status'=>true,'data'=>"");
if(empty($username))
{
$status['status']=-1;
$status['data']='Username not given';
return $status;
}
if(empty($password))
{
$status['status']=-1;
$status['data']='Password not given';
return $status;
}
if(empty($email))
{
$status['status']=-1;
$status['data']='Email not given';
return $status;
}
$token=md5(uniqid(gethostname(),true));
try
{
$user=new Users();
$user->setUsername($username)
->setPassword($password)
->setEmail($email)
//->setActivated(false)
->setToken($token);
$em=$this->getEntityManager();
$tmp_user=$user->getUsername();
$tmp_mail=$user->getEmail();
$query=$em->createQueryBuilder('p')
->where('p.username=?',$tmp_user)
->orWhere('p.email=?',$tmp_mail)
->getQuery();
$user=$query->getResult();
var_dump($user);
if(!empty($user))
{
$em->persist($user);
$em->flush();
$status['status']=true;
}
else
{
$result['data'] = -1;
$result['status'] = "User exists";
}
}
catch (\Exception $e)
{
echo $e->getMessage();
$result['data'] = $e->getMessage(); // The exact message of the exception thrown during INSERT
$status['status']=false;
}
return $status;
}
}
我要實現的是檢查是否檢查用戶名或電子郵件相同的用戶。 這就是為什么我跑:
$tmp_user=$user->getUsername();
$tmp_mail=$user->getEmail();
$query=$em->createQueryBuilder('p')
->where('p.username=?',$tmp_user)
->orWhere('p.email=?',$tmp_mail)
->getQuery();
$user=$query->getResult();
內部寄存器功能。 但是:
echo $e->getMessage();
返回:
[Syntax Error] line 0, col 7: Error: Expected known function, got 'WHERE'
select
語句丟失,必須准備where
語句。
將您的代碼更改為:
$query = $em->createQueryBuilder('p')
->select('p')
->where('p.username = :username')
->orWhere('p.email = :email')
->setParameter('username', $tmp_user)
->setParameter('email', $tmp_mail)
->getQuery();
$user = $query->getResult();
這樣,您便有了一個干凈的准備好的查詢。
請參閱原則QueryBuilder
文檔的“為查詢綁定參數”一章
編輯
您需要像下面這樣使用存儲庫:
$repository = $em->getRepository('YourBundle:YourEntity');
$query = $repository->createQueryBuilder('p)
->select('p')
//...
或添加FROM
語句:
$query = $em->createQueryBuilder('p')
->from('YourEntityNamespace', 'p')
// ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.