Symfony2灯具

时间:2012-10-19 15:01:11

标签: symfony doctrine fixtures

我尝试在Smyony2上使用d:f:l时出现此错误,我在Servicio和Usuario上遇到了同样的错误,所以我发布了一个例子,如果你帮助我,另一个也将修复。

  [ErrorException]
  Catchable Fatal Error: Argument 1 passed to PGE\BitacoraBundle\Entity\Tarea::setServicio() must be an instance of PGE\BitacoraBundle\Entity\Servicio, integer given, called in D:\Zend\Apache2\htdocs\PGE\src\PGE\BitacoraBu
  ndle\DataFixtures\ORM\Tareas.php on line 20 and defined in D:\Zend\Apache2\htdocs\PGE\src\PGE\BitacoraBundle\Entity\Tarea.php line 281

这是代码:

Tareas.php

<?php
namespace PGE\BitacoraBundle\DataFixtures\ORM;

use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;
use PGE\BitacoraBundle\Entity\Tarea;

class Tareas extends AbstractFixture implements OrderedFixtureInterface
{
    public function getOrder()
    {
        return 3;
    }
    public function load(ObjectManager $manager)
    {
        for ($i = 1; $i < 5; $i++) {
            $entidad = new Tarea();

            $entidad->setServicio($i);

            $entidad->setFechaInicio(new \DateTime());
            $entidad->setFechaFinal(new \DateTime());
            $entidad->setDescripcion('Descripcion aqui');
            $entidad->setEstado('Pendiente');
            $entidad->setPrioridad('P1');
            $entidad->setResumen('Hola soy un resumen');
            $entidad->setSolicitante('x068753');
            $entidad->setUsuario($i);
        }
    $manager->flush();
    }
}

Usuario.php

<?php
namespace PGE\BitacoraBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Entity
* @ORM\Table(name="bitacora_usuario")
*/
class Usuario
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue
    */
    private $id;

    /** @ORM\Column(type="string", length=255) */
    private $nombre;

    /** @ORM\Column(type="string", length=255) */
    private $apellidos;

    /** @ORM\Column(type="string", length=255) */
    private $prbes;

    public function __toString()
    {
        return $this->getNombre().' '.$this->getApellidos();
    }

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

    /**
     * Set nombre
     *
     * @param string $nombre
     * @return Usuario
     */
    public function setNombre($nombre)
    {
        $this->nombre = $nombre;

        return $this;
    }

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

    /**
     * Set apellidos
     *
     * @param string $apellidos
     * @return Usuario
     */
    public function setApellidos($apellidos)
    {
        $this->apellidos = $apellidos;

        return $this;
    }

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

    /**
     * Set prbes
     *
     * @param string $prbes
     * @return Usuario
     */
    public function setPrbes($prbes)
    {
        $this->prbes = $prbes;

        return $this;
    }

    /**
     * Get prbes
     *
     * @return string 
     */
    public function getPrbes()
    {
        return $this->prbes;
    }
}
编辑:我正在使用Symfony 2.1.X

1 个答案:

答案 0 :(得分:0)

捆绑包没有问题,而是非常清楚地说明传递给$entidad->setServicio($i);的第一个参数必须是PGE\BitacoraBundle\Entity\Servicio的实例,而不是整数。

所以你得到一个Serivcio的实例并将其传递给setter。如果在另一个fixture中创建servicio,则需要查看bundle文档的sharing objects between fixtures部分。