Doctrine 2 findAll只返回1个结果

时间:2016-02-29 05:15:54

标签: php symfony orm doctrine-orm doctrine

findAll()在我的存储库中找到一个结果:

$retorno[] = $bd->getEntityManager()->getRepository($classname)->findAll();

实体类:

<?php
use Doctrine\ORM\Mapping as ORM;

/**
 * Subtipo
 *
 * @ORM\Table(name="subtipo", indexes={@ORM\Index(name="fk_Subtipo_Tipo1_idx", columns={"Tipo_id"})})
 * @ORM\Entity
 */
class Subtipo
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="nome", type="string", length=45, nullable=false)
     */
    private $nome;

    /**
     * @var \Tipo
     *
     * @ORM\ManyToOne(targetEntity="Tipo")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="Tipo_id", referencedColumnName="id")
     * })
     */
    private $tipo;


    /**
     * Get id
     *
     * @return integer
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set nome
     *
     * @param string $nome
     *
     * @return Subtipo
     */
    public function setNome($nome)
    {
        $this->nome = $nome;

        return $this;
    }

    /**
     * Get nome
     *
     * @return string
     */
    public function getNome()
    {
        return $this->nome;
    }

    /**
     * Set tipo
     *
     * @param \Tipo $tipo
     *
     * @return Subtipo
     */
    public function setTipo(\Tipo $tipo = null)
    {
        $this->tipo = $tipo;

        return $this;
    }

    /**
     * Get tipo
     *
     * @return \Tipo
     */
    public function getTipo()
    {
        return $this->tipo;
    }
}

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

如果你这样做

$retorno[] = $bd->getEntityManager()->getRepository($classname)->findAll();
        ^----- this

您正在创建一个数组数组(或ArrayCollection数组),因此,如果您检查$retorno[]的长度,这将导致1个元素包含实际结果。

这样的东西
$retorno = [
    0 => [
        0 => 'first real result',
        1 => 'second real result',
        [...]
        n => 'nth real result'
    ]
];

只需使用此语法

$retorno = $bd->getEntityManager()->getRepository($classname)->findAll();