获取其字段的至少一部分以某个字符串参数开头的所有实体



我有一个带有 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;
}  

相关内容

  • 没有找到相关文章

最新更新