Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
Arrays Symony在数组类型中查找_Arrays_Doctrine - Fatal编程技术网

Arrays Symony在数组类型中查找

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(

从symfony的形式来看,我在一个指令数组中存储了几个值

然后我想在我的控制器中做一个findBy来查找Id为的实体

我的实体:

<?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');在删除内存限制和不获取超出内存的致命错误的指令之前,我想我必须创建另一个表,做更干净的事情。谢谢