我是Symfony2和Doctrine的新手。
我有兩個類:用戶和書。每個用戶都可以非常喜歡,甚至不喜歡數據庫中的每本書。
Symfony2和原理:兩個類之間的多重關係
爲了描述這種關聯,我定義了兩個類之間的三個不同ManyToMany關係。 這裏是我的代碼的摘錄:
這裏是一流的用戶
<?php
namespace MyBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
/**
* User
*
* @ORM\Table(name="user")
* @ORM\Entity(repositoryClass="MyBundle\Entity\UserRepository")
*/
class User
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="username", type="string", length=64, unique=true)
*/
private $username;
/**
* @ORM\ManyToMany(targetEntity="Book", inversedBy="user_likemuch")
* @ORM\JoinColumn(name="book_id", referencedColumnName="id")
*/
protected $books_likemuch;
/**
* @ORM\ManyToMany(targetEntity="Book", inversedBy="user_likequite")
* @ORM\JoinColumn(name="book_id", referencedColumnName="id")
*/
protected $books_likequite;
/**
* @ORM\ManyToMany(targetEntity="Book", inversedBy="user_dislike")
* @ORM\JoinColumn(name="book_id", referencedColumnName="id")
*/
protected $books_dislike;
public function __construct()
{
$this->books_likemuch = new ArrayCollection();
$this->books_likequite = new ArrayCollection();
$this->books_dislike = new ArrayCollection();
}
}
這裏是類圖書:
<?php
namespace MyBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
/**
* Book
*
* @ORM\Table(name="book")
* @ORM\Entity(repositoryClass="MyBundle\Entity\BookRepository")
*/
class Book
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=64)
*/
private $name;
/**
* @ORM\ManyToMany(targetEntity="User", mappedBy="books_likemuch")
*/
protected $user_likemuch;
/**
* @ORM\ManyToMany(targetEntity="User", mappedBy="books_likequite")
*/
protected $user_likequite;
/**
* @ORM\ManyToMany(targetEntity="User", mappedBy="books_dislike")
*/
protected $user_dislike;
public function __construct() {
$this->user_likemuch = new ArrayCollection();
$this->user_likequite = new ArrayCollection();
$this->user_dislike = new ArrayCollection();
}
}
然而,當我嘗試通過
01來更新數據庫的模式php app/console doctrine:schema:update --force
我得到以下錯誤:
[主義\ DBAL \架構\ SchemaException]
與名稱表 'XXX/myproject的/應用程序/數據/ users.user_book' 已經存在。
事實上,我甚至不明白,如果我的描述錯誤的方式的關係,或者如果學說不能在兩個類之間管理多個關係。
有沒有人有任何建議?
在此先感謝!
這實際上是一個很大的問題,可能會是有益的很多其他的開發商。 – 2014-08-31 16:21:27