Mysql 在2个字段中搜索全名

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')

我有一个具有firstName和lastName字段的用户实体。如何按任何顺序搜索全名。例如,搜索“John Doe”、“Doe John”、“John D”并获得相关结果

这是我目前的问题。但我一次只能搜索一列,即获取与“firstName”或“lastName”匹配的结果。例如,我得到的结果是“John”或“Doe”,但不是“John Doe”

  $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.'%')
        )
    ))
);