Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony2-如何在findBy中搜索json_数组字段_Php_Json_Symfony_Doctrine Orm - Fatal编程技术网

Php Symfony2-如何在findBy中搜索json_数组字段

Php Symfony2-如何在findBy中搜索json_数组字段,php,json,symfony,doctrine-orm,Php,Json,Symfony,Doctrine Orm,假设我有一组数据联系人 $cont = array("123-123-123","sample@sample.com"); 我将其作为json\u数组type存储在symfony2原则字段中 $person->setContacts($cont); //Which automatically converts into json 现在我的问题是,在通过联系人搜索此人时 $cont['contacts'] = array("123-123-123","sample@sample.com"

假设我有一组数据联系人

$cont = array("123-123-123","sample@sample.com");
我将其作为
json\u数组
type存储在symfony2原则字段中

$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\u数组
字段检索数据,如果问题太简单,请原谅。

通过json搜索-对SQL数据库来说是个坏主意。您可以创建另一个字段(电话和电子邮件)

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


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

若要对数据库执行搜索,则不应使用JSON存储在数据库中

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

然后您可以在这里找到几个持久化值对象的解决方案

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

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


您可以在此处阅读文档()。

您可以展示您的
setContacts
方法吗?它是由条令自动生成的,而我们创建实体序列化您需要查询的数据不是一个好的选择。为什么不创建一个单独的实体
联系人
?或者使用中的值对象?这通常是不正确的。例如,postgres中有
jsonb
。你可以高效地查询这个问题。
$cont['contacts'] = array("123-123-123","sample@sample.com");
$person->findBy($cont);