Mysql 在2个字段中搜索全名
我有一个具有firstName和lastName字段的用户实体。如何按任何顺序搜索全名。例如,搜索“John Doe”、“Doe John”、“John D”并获得相关结果 这是我目前的问题。但我一次只能搜索一列,即获取与“firstName”或“lastName”匹配的结果。例如,我得到的结果是“John”或“Doe”,但不是“John Doe”Mysql 在2个字段中搜索全名,mysql,symfony,doctrine-orm,Mysql,Symfony,Doctrine Orm,我有一个具有firstName和lastName字段的用户实体。如何按任何顺序搜索全名。例如,搜索“John Doe”、“Doe John”、“John D”并获得相关结果 这是我目前的问题。但我一次只能搜索一列,即获取与“firstName”或“lastName”匹配的结果。例如,我得到的结果是“John”或“Doe”,但不是“John Doe” $likeName = $name.'%'; $qb = $this->createQueryBuilder('user')
$likeName = $name.'%';
$qb = $this->createQueryBuilder('user')
->where($qb->expr()->orX(
$qb->expr()->like('user.firstName', "'$likeName'"),
$qb->expr()->like('user.lastName', "'$likeName'")
);
试试这个:
$likeName = $name.'%';
$qb = $this->createQueryBuilder('user')
->where($qb->expr()->orX(
$qb->expr()->like($qb->expr()->concat($qb->expr()->concat('user.lastName', ' '), 'user.firstName')
, "'$likeName'"),
$qb->expr()->like($qb->expr()->concat($qb->expr()->concat('user.firstName', ' '), 'user.lastName')
, "'$likeName'")
));
可以尝试创建存储库类和类似以下查询的内容:
$this->getEntityManager()
->createQueryBuilder('user')
->andWhere('user.firstName LIKE :firstName')
->andWhere('user.lastName LIKE :lastName')
->setParameter('firstName', $firstName)
->setParameter('lastName', $lastName)
->getQuery()
->getResult();
我一次只能搜索一列是什么意思?你能解释清楚你想要的结果是什么吗?你现在得到了什么?举一个数据的小例子please@AlessandroMinoccheri这意味着我可以得到与wither firsName或lastName匹配的结果,但当我输入全名时,我什么也得不到
$qb->where($qb->expr()->andX(
$qb->expr()->orX(
$qb->expr()->like(
$qb->expr()->concat('employee_alias.firstName', $qb->expr()->concat($qb->expr()->literal(' '), 'employee_alias.lastName')),
$qb->expr()->literal($phrase.'%')
),
$qb->expr()->like(
$qb->expr()->concat('employee_alias.lastName', $qb->expr()->concat($qb->expr()->literal(' '), 'employee_alias.firstName')),
$qb->expr()->literal($phrase.'%')
)
))
);