【问题标题】:Doctrine search in json_array [duplicate]json_array中的教义搜索[重复]
【发布时间】:2017-11-20 09:12:22
【问题描述】:

我正在尝试在 Doctrine+Symfony 3 中的 json 类型中进行基本搜索。我的字段声明如下:

 /**
 * @ORM\Column(name="data", type="json_array", nullable=true)
 */
 private $data;

这是我存储库中在 MySQL 上运行良好的代码:

public function searchByKeyword($kw)
{
    $kw = str_replace(" ","%",$kw);
    return $this->createQueryBuilder("d")
        ->join("d.product", "p")
        ->where("d.data like :search")
        ->setFirstResult(0)
        ->setMaxResults(50)
        ->orderBy("p.createdOn", "DESC")
        ->setParameter("search", "%" . $kw . "%")->getQuery()->execute();
}

我转向了 Postgresql 9.5,它可以处理 JSON 类型并且不对 json 数组使用 TEXT。我有这个错误:

SQLSTATE[42883]:未定义函数:7 错误:运算符不存在:json ~~未知

我很确定我应该将 json 字段转换为文本来解决我的问题,但我尝试了 (d.data)::TEXTd.data::TEXT,但它不起作用。

【问题讨论】:

    标签: php json postgresql symfony doctrine


    【解决方案1】:

    数据类型json作为一个整体没有相等(或不等)运算符,因为相等很难建立。你会喜欢 Postgres 9.4 中的 jsonb,这是可能的。有关 dba.SE(最后一章)的相关答案中的更多详细信息

    在这里看到:https://stackoverflow.com/a/24296054/652318

    这里还有一些相关的内容: https://stackoverflow.com/a/32843380/652318

    您可能必须创建一个新类型来对其进行转码以使用 :: 表示法。

    【讨论】:

      猜你喜欢
      • 2013-05-11
      • 2015-06-14
      • 2021-04-15
      • 2018-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-18
      • 2018-08-20
      相关资源
      最近更新 更多