У меня есть два объекта, относящихся к этой проблеме, и я хочу, чтобы таблица соединений могла перекрещивать контрольные значения в каждой таблице.Учение Symfony2 Множество сопоставлений ассоциаций ManyToMany недопустимо?
Вот объяснение:
Entity ContainerType.php:
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use AppBundle\Entity\Containers;
/**
* ContainerType
*
* @ORM\Table(name="container_type")
* @ORM\Entity
* @ORM\HasLifecycleCallbacks()
*/
class ContainerType
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="type", type="string", length=255)
*/
private $type;
/**
* @var \DateTime
*
* @ORM\Column(name="date_added", type="datetime")
*/
private $dateAdded;
/**
* @var \DateTime
*
* @ORM\Column(name="date_modified", type="datetime", nullable=true)
*/
private $dateModified;
/**
* @ORM\ManyToMany(targetEntity="Containers", inversedBy="type")
* @ORM\JoinTable(name="container_type_containers")
**/
private $container;
public function __construct()
{
$this->container = new ArrayCollection();
}
И сущность Containers.php:
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use AppBundle\Entity\ContainerType;
/**
* Containers
*
* @ORM\Table(name="containers")
* @ORM\Entity
*/
class Containers
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="number", type="string", length=255)
*/
private $number;
/**
* @ORM\ManyToMany(targetEntity="Containers", mappedBy="container")
*/
private $type;
public function __construct()
{
$this->type = new ArrayCollection();
}
И хотя обновление схемы работает без проблем, когда я доктрина: схема: подтвердите, я получаю следующий сбой:
[Mapping] FAIL - The entity-class 'AppBundle\Entity\Containers' mapping is invalid:
* The association AppBundle\Entity\Containers#type refers to the owning side field AppBundle\Entity\Containers#container which does not exist.
Но поле $ container существует в ContainerType, поэтому я не понимаю, почему он пытается ссылаться на поле, называемое контейнером в сущности Containers?
Может ли кто-нибудь пролить свет на это?
Спасибо Майкл