Arhn - архитектура программирования

Doctrine не создает отношения ManyToMany схемы базы данных

Doctrine не создает схему базы данных для отношения ManyToMany.

c: \ Bitnami \ wampstack-5.6.30-0 \ apache2 \ htdocs \ typejoy.biz> поставщик php \ doctrine \ orm \ bin \ doctrine orm: schema-tool: create

создает две таблицы для двух сущностей testChi и testPar, но не создает @JoinTable «tParChiMTM».

ENtity testChi

<?php

namespace LogBundle\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\Table;
use Doctrine\ORM\Mapping\Index;
use Doctrine\ORM\Mapping\Id;
use Doctrine\ORM\Mapping\GeneratedValue;
use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\JoinTable;
use Doctrine\ORM\Mapping\OneToOne;
use Doctrine\ORM\Mapping\OneToMany;
use Doctrine\ORM\Mapping\ManyToOne;
use Doctrine\ORM\Mapping\ManyToMany;
use LogBundle\Entity\testPar;


/** 
 * @Table(name="ttestchi")
 * @Entity()
 */ 
class testChi {

    /**
     * @var integer
     *
     * @Column(name="id", type="integer")
     * @Id
     * @GeneratedValue(strategy="AUTO")
     */
    private $id;
/** @Column ( name="name", type="string", length=50, unique=false, nullable=true) */
     private $name; 

/** @ManyToMany ( targetEntity="testPar", mappedBy="chiMTM") */
     private $parMTM; 


    public function __construct() { 
        $this->chiMTM = new ArrayCollection();
    }

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

    /**
     * Set name
     * @param integer $name
     * @return name
     */
    public function setName($name)
    {
        $this->name = $name;

        return $this;
    }    



  //make you have to serialize, deserialize entity here ??? 
    /**
     * Get parMTM
     *
     * @return LogBundle\Entity\ParMTM
     */
    public function getParMTM()
    {
        return $this->parMTM;
    }

    /**
     * Remove parMTM
     *
     * @param \LogBundle\Entity\testPar $parMTM
     */
    public function removeParMTM (\LogBundle\Entity\testPar $parMTM)
    {
        if ( $this->hasParMTM($parMTM) ) { 
            $this->parMTM->removeElement($parMTM);
        }
    }

    /**
     * Add parMTM
     *
     * @param \LogBundle\Entity\testPar $parMTM
     *
     * @return ParMTM
     */
    public function addParMTM(\LogBundle\Entity\testPar $parMTM)
    {
        if ( !$this->hasParMTM($parMTM) ) { 
            $this->parMTM[] = $parMTM;
        }

        return $this;
    }

    /**
     * @param \LogBundle\Entity\testPar $parMTM
     * @return bool
     */
    public function hasParMTM($parMTM)
    {
        if( $this->getParMTM() ) {
            return $this->getParMTM()->contains($parMTM);
        }
    }   



    /**
     * Return Entity as string  
     * 
     * @return string String representation of this class
     */
    public function __toString()
    {
        return strval($this->id);
    }

 } 

Entity testPar

<?php

namespace LogBundle\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\Table;
use Doctrine\ORM\Mapping\Index;
use Doctrine\ORM\Mapping\Id;
use Doctrine\ORM\Mapping\GeneratedValue;
use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\JoinTable;
use Doctrine\ORM\Mapping\OneToOne;
use Doctrine\ORM\Mapping\OneToMany;
use Doctrine\ORM\Mapping\ManyToOne;
use Doctrine\ORM\Mapping\ManyToMany;
use LogBundle\Entity\testChi;


/** 
 * @Table(name="ttestpar")
 * @Entity()
 */ 
class testPar {

    /**
     * @var integer
     *
     * @Column(name="id", type="integer")
     * @Id
     * @GeneratedValue(strategy="AUTO")
     */
    private $id;
/** @Column ( name="name", type="string", length=50, unique=false, nullable=true) */
     private $name; 

/** @ManyToMany ( targetEntity="testChi", inversedBy="parMTM") */
/** @JoinTable ( name="tParChiMTM") */
     private $chiMTM; 


    public function __construct() { 
        $this->chiMTM = new ArrayCollection();
    }

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

    /**
     * Set name
     * @param integer $name
     * @return name
     */
    public function setName($name)
    {
        $this->name = $name;

        return $this;
    }    



  //make you have to serialize, deserialize entity here ??? 
    /**
     * Get chiMTM
     *
     * @return LogBundle\Entity\ChiMTM
     */
    public function getChiMTM()
    {
        return $this->chiMTM;
    }

    /**
     * Remove chiMTM
     *
     * @param \LogBundle\Entity\testChi $chiMTM
     */
    public function removeChiMTM (\LogBundle\Entity\testChi $chiMTM)
    {
        if ( $this->hasChiMTM($chiMTM) ) { 
            $this->chiMTM->removeElement($chiMTM);
        }
    }

    /**
     * Add chiMTM
     *
     * @param \LogBundle\Entity\testChi $chiMTM
     *
     * @return ChiMTM
     */
    public function addChiMTM(\LogBundle\Entity\testChi $chiMTM)
    {
        if ( !$this->hasChiMTM($chiMTM) ) { 
            $this->chiMTM[] = $chiMTM;
        }

        return $this;
    }

    /**
     * @param \LogBundle\Entity\testChi $chiMTM
     * @return bool
     */
    public function hasChiMTM($chiMTM)
    {
        if( $this->getChiMTM() ) {
            return $this->getChiMTM()->contains($chiMTM);
        }
    }   



    /**
     * Return Entity as string  
     * 
     * @return string String representation of this class
     */
    public function __toString()
    {
        return strval($this->id);
    }

 } 

c: \ Bitnami \ wampstack-5.6.30-0 \ apache2 \ htdocs \ typejoy.biz> поставщик php \ doctrine \ orm \ bin \ doctrine orm: schema-tool: create

создает две таблицы, но не создает @JoinTable «tParChiMTM».

01.04.2017

Ответы:


1

Причина была в аннотациях:

ПРАВИЛЬНЫЙ

/** 
 * @ManyToMany ( targetEntity="testPar", mappedBy="chiMTM") */

/**
 *  @ManyToMany ( targetEntity="testChi", inversedBy="parMTM") 
 * ( name="tParChiMTM") */
     private $chiMTM; 

Вы не можете начинать каждую строку с /**, только первая строка должна содержать это, последующие строки могут начинаться только с одного *.

НЕПРАВИЛЬНЫЙ:

/** @ManyToMany ( targetEntity="testChi", inversedBy="parMTM") */
/** @JoinTable ( name="tParChiMTM") */
01.04.2017
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..