我在使用Doctrine的Symfony2中遇到两个实体的问题:
这是第一个实体:
/**
* Pedidos
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="RestCarta\Bundle\FrontendBundle\Entity\PedidosRepository")
*/
class Pedidos
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="usuario", type="string", length=100)
*/
private $usuario;
/**
* @var string
*
* @ORM\Column(name="mesa", type="string", length=3)
*/
private $mesa;
/**
* @var integer
*
* @ORM\OneToOne(targetEntity="Articulos")
* @ORM\JoinColumn(name="articulo_id", referencedColumnName="id")
*/
private $articulo;
/**
* @var string
*
* @ORM\Column(name="precio", type="decimal")
*/
private $precio;
这是第二个实体:
/**
* Articulos
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="RestCarta\Bundle\FrontendBundle\Entity\ArticulosRepository")
*/
class Articulos
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="referencia", type="string", length=100)
*/
private $referencia;
/**
* @var string
*
* @ORM\Column(name="nombre", type="string", length=255)
*/
private $nombre;
/**
* @var string
*
* @ORM\Column(name="descripcion", type="string", length=255)
*/
private $descripcion;
/**
* @var string
*
* @ORM\Column(name="precio", type="decimal")
*/
private $precio;
/**
* @var string
*
* @ORM\Column(name="imagen", type="string", length=255)
*/
private $imagen;
/**
* @ORM\ManyToOne(targetEntity="Categorias", inversedBy="articulos")
* @ORM\JoinColumn(name="categoria_id", referencedColumnName="id")
*/
protected $categoria;
现在问题。
我如何坚持一个" Pedido"包含一个" Articulo" ??
我可以阅读所有" Pedido"和#34; Articulo" LEFT JOIN完美地工作,(通过phpMyAdmin手动插入数据)但是当我用这段代码保存更多数据时:
$em = $this->getDoctrine()->getManager();
$pedido = new Pedidos();
$pedido->setUsuario('blablabla');
$pedido->setMesa('blablabla');
$pedido->setArticulo($identi);
$pedido->setPrecio('blablabla');
$em->persist($pedido);
$em->flush();
$ identi =对应于" Articulos"
的ID结果是:
警告:spl_object_hash()期望参数1为object,string 给定的 /Applications/MAMP/htdocs/RestCarta/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php line 1388 500内部服务器错误 - ContextErrorException
拜托,有人可以帮帮我吗?
先谢谢
答案 0 :(得分:1)
$identi
必须是实体对象,而不仅仅是您可以使用的ID
$em->getReference('YourNamespace\Articulos', $identi);