如何搜索json

假设我有一组数据联系人,

$cont = array("123-123-123","sample@sample.com");

我把它存储在symfony2 doctrine字段中作为json_array类型

$person->setContacts($cont); //Which automatically converts into json

现在我的问题是,在通过联系搜索该人的同时,

$cont['contacts'] = array("123-123-123","sample@sample.com");
or
$cont['contacts'] = json_encode(array("123-123-123","sample@sample.com"));
$person->findBy($cont);

不会产生正确的结果,是否有任何其他方法通过json_array字段检索数据,如果问题太基本,则很抱歉。


如果您想对其执行搜索,则不应该使用JSON存储在数据库中。

你试图做的是基本上坚持一个值对象(你应该创建一个真正的联系人值对象,而不是使用数组)。

然后你可以在这里找到几个解决方案来坚持价值对象。 http://rosstuck.com/persisting-value-objects-in-doctrine/

第一个(自己映射)与ZhukV相同,即使保留一个数组也是适用的。


如果您使用PostgreSQL> 9.3,则可以使用json(或jsonb)数据类型。

您可以在这里阅读文档(数据类型JSON文档)。


用JSON搜索 - 对于SQL数据库来说不好。 您可以创建另一个字段(电话和电子邮件)。

在绑定到PDO之前的所有值,在DBAL Types中自动转换,并且必须将真正的数据设置为参数(对象,数组等等)。

$cont['contacts'] = array("123-123-123","sample@sample.com");
$person->findBy($cont);

这是一个工作代码。 您可以看到分析器查看完整的SQL查询。

链接地址: http://www.djcxy.com/p/79279.html

上一篇: how to search json

下一篇: Custom sorting list of strings (following Chamorro language collation rules)