【发布时间】:2025-06-19 12:25:01
【问题描述】:
我正在使用 Symfony2 和 Doctrine 2。
我的应用程序中有 5 个实体。
- 书籍
- 关键字(双向,应获取所有具有特定关键字的书籍)
- 作者(双向,应获取具有特定作者的所有书籍)
- 类别(双向,应获取属于特定类别的所有书籍)
-
BookExtra(单向,在 Book 实体中,应该获取 BookExtra 数据)
- 每本书可以有很多关键词
- 每本书可以有多个作者
- 每本书都可以归为一个类别
- 每本书都有一个 BookExtra 记录。
- 关键字和作者表应包含唯一值
添加新的Book 时,如果Author(s) 和Keyword(s) 存在,则应将尊重的Author ID 和Keyword ID 分配给Book,如果不存在,则将创建新的records,并将受尊重的ID 分配给Book。
我有以下Entity Classes:
Book.php
namespace Acme\StoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Book
*
* @ORM\Table(name="book")
* @ORM\Entity
*/
class Book {
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string
*
* @ORM\Column(name="isbn", type="string", length=16)
*/
protected $isbn;
/**
* @var string
*
* @ORM\Column(name="title", type="string", length=255)
*/
protected $title;
/*
* @ORM\OneToOne(targetEntity="BookExtra")
* @ORM\JoinColumn(name="extra_id", referencedColumnName="id")
*
* ********* OR *********
* *********What should go HERE*********
*
*/
protected $bookextra;
/*
* @ORM\ManyToMany(targetEntity="Author", inversedBy="books")
* @ORM\JoinTable(name="authors_books")
*/
protected $author;
/*
* @ORM\OneToOne(targetEntity="Category")
* @ORM\JoinColumn(name="category_id", referencedColumnName="id")
*/
protected $category;
}
BookExtra.php
namespace Acme\StoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* BookExtra
*
* @ORM\Table(name="book_extra")
* @ORM\Entity
*/
class Detail {
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string
*
* @ORM\Column(name="data", type="string", length=255)
*/
protected $data;
}
Author.php
namespace Bookhut\BookBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Author
*
* @ORM\Table(name="author")
* @ORM\Entity
*/
class Author {
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=100)
*/
protected $name;
// **********What should go HERE*********
protected $books;
}
Keyword & Category 实体类似于作者实体
问题是,当我用cli 生成schema 时,它永远不会生成Relationships/Associations。
对于Book & Author 实体,正确的Relationships/Associations 应该是什么
我搜索了这个问题和正确的Relationships/Associations
我发现了这个:
Saving onetoone relation entities
doctrine2: in a one-to-many bidirectional relationship, how to save from the inverse side?
但这对我没有帮助。
有人可以举例说明这种Relationships/Associations 和insert 操作吗?
【问题讨论】:
标签: entity-framework symfony doctrine-orm relational-database