Symfony在数组中找到Type

时间:2014-02-26 14:24:58

标签: arrays doctrine

从symfony的一种形式,我在一个学说数组中存储了几个值。

然后我想在我的控制器中找一个带有Id的entite。

我的实体:

<?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;
    }


}

我想在我的控制器中做的是找到所有在UnitsId中具有X unitId的问卷。

我试过了: $ entities = $ em-&gt; getRepository('问卷') - &gt; findBy(array('unitsId'=&gt; $ unitId));

但它不起作用。 这是一种方法吗?

提前谢谢

2 个答案:

答案 0 :(得分:1)

不,你不能用Query执行此操作,首先你必须恢复调查问卷对象,然后你必须迭代数组,因为Doctrine在数据库中保存序列化的数组,这是很多垃圾,所以你无法直接查询。

  1. 找到问题。
  2. Doctrine自动反序列化数组
  3. 在数组中迭代并找到正确的id。
  4. 返回结果。
  5. 我希望它能帮助

答案 1 :(得分:0)

我认为您必须使用QueryBuilder从已加入的查询中获取对象。