我有一个带有 dept 字段的实体,该字段是代表邮政编码的未定义数量的字符串,由字符 -
分隔。
例:
35000-35200-35700
如何获取 dept 字段的至少一部分以某个字符串参数开头的所有实体?
class Town {
/**
* @var integer
*
* @ORMColumn(name="id", type="integer")
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
* @SerializerExpose
*/
private $id;
/**
* @var string
*
* @ORMColumn(name="dept", type="string", length=255, nullable=true)
*/
private $dept;
}
我想要这样的东西,例如$str
35
参数:
$em->getRepository("Town")->findByDeptAutoComplete($str);
我是你,我会将这些邮政编码存储在另一个实体中。(我假设由-
分隔的字符串是邮政编码。
但是,要回答有关查找dept 字段至少一部分以某个字符串参数开头的实体的问题,您可以测试town.dept
是否包含-35
(例如,分隔符 + 部门 35),然后测试字符串的开头(以捕获第一个邮政编码):
public function findByDeptAutoComplete($dept) {
$queryResult = $this->createQueryBuilder('town')
->select('town')
->where("LOCATE(CONCAT('-', :dept), town.dept) > 0 OR SUBSTRING(town.dept, 1, LENGTH(:dept)) = :dept")
->setParameter('dept', $dept)
->getQuery()
->getResult()
;
return $queryResult;
}