Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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
Php symfony2原则一个一个得到_Php_Symfony_Doctrine Orm - Fatal编程技术网

Php symfony2原则一个一个得到

Php symfony2原则一个一个得到,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我有课 namespace Miejsce\ObiektyBundle\Entity; use Doctrine\ORM\Mapping as ORM; /** * Miejsce * @ORM\Entity * @ORM\Table(name="mMiejsce") */ class Miejsce { ... /** * @var Lokalizacja $lokalizacja * @ORM\OneToOne(targetEntity="Miejsc

我有课

namespace Miejsce\ObiektyBundle\Entity;

use Doctrine\ORM\Mapping as ORM;


/**
 * Miejsce
 * @ORM\Entity
 * @ORM\Table(name="mMiejsce")
 */
class Miejsce
{

...

 /**
     * @var Lokalizacja $lokalizacja
     * @ORM\OneToOne(targetEntity="Miejsce\LokalizacjaBundle\Entity\Lokalizacja" , mappedBy="miejsce")
     * @ORM\JoinColumn(name="id", referencedColumnName="id")
     */
    protected $lokalizacja;

   /**
     * Get lokalizacja
     *
     * @return \Miejsce\LokalizacjaBundle\Entity\Lokalizacja
     */
    public function getLokalizacja()
    {
        return $this->lokalizacja;
    }
和lokalizacja

namespace Miejsce\LokalizacjaBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Miejsce\ObiektyBundle\Entity\Miejsce;

/**
 * @ORM\Entity
 *
 * @ORM\Table(name="mLokalizacja")
*
 */
class Lokalizacja {
   /**
     * @var Miejsce
     * @ORM\OneToOne(targetEntity="Miejsce\ObiektyBundle\Entity\Miejsce", inversedBy="lokalizacja")
     * @ORM\JoinColumn(name="id", referencedColumnName="id")
     */
    protected $miejsce;
我尝试在控制器中获取对象:

$miejsce = $this->getDoctrine()
            ->getRepository('MiejsceObiektyBundle:Miejsce')
            ->find(1);

 var_dump($miejsce->getLokalizacja());
当nothave=*@ORM\JoinColumn(name=“id”,referencedColumnName=“id”)时,为空 在数据库中,我有mMiejsce.id=1和mLokalizacja.id

那么为什么这不连接这些元素呢? 我想获取miejsce对象,并已将lokalizacja-onetoone关系-id=id归档

我做错了什么

但当我按下*@ORM\JoinColumn(name=“id”,referencedColumnName=“id”)时

我得到:

类Miejsce\LokalizacjaBundle\Entity\Miejsce不存在 500内部服务器错误-ReflectionException

现在我有:

/**
 * Miejsce
 * @ORM\Entity
 * @ORM\Table(name="mMiejsce")
 */
class Miejsce
{

    /**
     * @var integer
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var Lokalizacja $lokalizacja
     * @ORM\OneToOne(targetEntity="Miejsce\LokalizacjaBundle\Entity\Lokalizacja", mappedBy="miejsce" )
     * @ORM\JoinColumn(name="id", referencedColumnName="miejsce_id")
     */
    protected $lokalizacja;
好的,现在我有:

/**
 * Miejsce
 * @ORM\Entity
 * @ORM\Table(name="mMiejsce")
 */
class Miejsce
{

    /**
     * @var integer
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var Lokalizacja $lokalizacja
     * @ORM\OneToOne(targetEntity="Miejsce\LokalizacjaBundle\Entity\Lokalizacja", mappedBy="miejsce" )
     * @ORM\JoinColumn(name="id", referencedColumnName="miejsce_id")
     */
    protected $lokalizacja;

数据库更新工作正常

  php app/console doctrine:schema:update --force 
Database schema updated successfully! "5" queries were executed
但仍然有:

 Class Miejsce\LokalizacjaBundle\Entity\Miejsce does not exist
500 Internal Server Error - ReflectionException 
这很奇怪-为什么doctrine/symfony试图在不同的包上找到这个类?(实体在其他捆绑包上?可能这是问题?

根据,您需要指定如何映射关系(通过ID和对象)。以下是文档中的示例:

<?php
/** @Entity **/
class Customer
{
    // ...

    /**
     * @OneToOne(targetEntity="Cart", mappedBy="customer")
     **/
    private $cart;

    // ...
}

/** @Entity **/
class Cart
{
    // ...

    /**
     * @OneToOne(targetEntity="Customer", inversedBy="cart")
     * @JoinColumn(name="customer_id", referencedColumnName="id")
     **/
    private $customer;

    // ...
}
下面是映射对象的setter/getter函数的外观。无论您尝试在
Lokalizacja
内部创建新的
Miejsce
,还是在
Miejsce
内部创建新的
Lokalizacja
,都应该包含完整的命名空间

public function setMiejsce(Miejsce\ObiektyBundle\Entity\Miejsce $miejsce)
{
    $this->miejsce = $miejsce;
}

我确实喜欢你写的东西,但现在有-类Miejsce\LokalizacjaBundle\Entity\Miejsce不存在-为什么这个搜索Miejsce\LokalizacjaBundle\Entity\Miejsce这个类在Miejsce\ObiektyBundle\Entity不是lokalizacja\u id上?但是这个关系有miejsce.id=lokalizacja.id-没有附加行lokalizacja_id,只有primary-to-primaryLook在我为您编写的代码的编辑中。请注意
lokalizacja_id
?您必须在
Miejsce
中使用该名称创建一个新变量,该变量将存储引用
Lokalizacja
的ID。当使用
JoinColumn
id
用作这两个值时,您试图将
Miejsce
id
Lokalizacja
id
相互映射!不能将一列同时用作主键和外键。根据,在尝试定义
Miejsce
类时,getter和setter函数可能未使用完整命名空间(反之亦然)。您是否尝试过使用
php应用程序/控制台原则:generate:entities
来更新getter和setter函数?有关所需的setter函数的示例,请参见我的新编辑
public function setMiejsce(Miejsce\ObiektyBundle\Entity\Miejsce $miejsce)
{
    $this->miejsce = $miejsce;
}