Arrays Symony在数组类型中查找
从symfony的形式来看,我在一个指令数组中存储了几个值 然后我想在我的控制器中做一个findBy来查找Id为的实体 我的实体:Arrays Symony在数组类型中查找,arrays,doctrine,Arrays,Doctrine,从symfony的形式来看,我在一个指令数组中存储了几个值 然后我想在我的控制器中做一个findBy来查找Id为的实体 我的实体: <?php /** * Questionnaire * */ class Questionnaire { /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(
<?php
/**
* Questionnaire
*
*/
class Questionnaire
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* @var text
*
* @ORM\Column(name="description", type="text")
*/
private $description;
/**
* add unit list
* @Exclude
* @ORM\Column(name="unitids", type="array")
*/
private $unitsId = array();
public function __construct()
{
$this->unitsId = array();
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set name
*
* @param string $name
* @return Questionnaire
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set description
*
* @param string $description
* @return Questionnaire
*/
public function setDescription($description)
{
$this->description = $description;
return $this;
}
/**
* Get description
*
* @return string
*/
public function getDescription()
{
return $this->description;
}
/**
* Set unitsId
*
* @param array $unitsId
* @return Questionnaire
*/
public function setUnitsId($unitsId)
{
$this->unitsId = $unitsId;
return $this;
}
/**
* Get unitsId
*
* @return array
*/
public function getUnitsId()
{
return $this->unitsId;
}
}
不,您不能使用查询来执行此操作,首先您必须恢复问卷对象,然后您必须对数组进行迭代,因为Doctrine将序列化的数组保存在数据库中,并且它是大量垃圾,因此您不能直接查询
找到问题所在李>
自动取消阵列序列化
在数组中迭代并找到正确的id
返回结果
我希望它能有所帮助我想你必须使用它来从联合查询中获取对象。你好@user227450你有一个QuestionnaireRepository类吗??如果没有,创建它,您还必须映射到您的问卷类@ORM\Entity(repositoryClass=“Name\NameBundle\Entity\QuestionnaireRepository”)当然可以。我刚把标签取下来。如何在存储库中进行搜索?非常感谢您的帮助。这是唯一的解决办法吗?我想避免这种情况,因为我害怕在迭代之前,如果结果中有太多行,那么会消耗内存。HI@user227450,我认为这是唯一的解决方案,但我不完全确定,因为对于querybuilder来说,序列化对象是复杂的。您可以使用ini_set('memory_limit','-1');在删除内存限制和不获取超出内存的致命错误的指令之前,我想我必须创建另一个表,做更干净的事情。谢谢