假设我有一组数据联系人,
$cont = array("123-123-123","sample@sample.com");
我在symfony2教义字段中存储为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
字段检索数据,对不起,如果问题太基础了。
答案 0 :(得分:4)
如果要对其进行搜索,则不应使用JSON存储在数据库中。
你要做的是基本上坚持一个值对象(你应该创建一个真正的Contact值对象而不是使用数组)。
然后你可以在这里找到几个持久化值对象的解决方案。 http://rosstuck.com/persisting-value-objects-in-doctrine/
第一个(自己绘制)与ZhukV相同,即使你保留一个数组也适用。
答案 1 :(得分:2)
如果您正在使用PostgreSQL>您可以使用json(或jsonb)数据类型。 9.3。
您可以在此处阅读文档(Datatype JSON Documentation)。
答案 2 :(得分:-3)
按JSON搜索 - SQL数据库的坏主意。您可以创建另一个字段(电话和电子邮件)。
绑定到PDO之前的所有值,在DBAL \ Types中自动转换,并且必须将实际数据设置为参数(对象,数组等)。
$cont['contacts'] = array("123-123-123","sample@sample.com");
$person->findBy($cont);
这是一个有效的代码。您可以查看分析器以查看完整的SQL查询。