Doctrine学习笔记(实体ManyToMany) —— 4
来源:互联网 发布:淘宝成交排名 编辑:程序博客网 时间:2024/06/13 23:14
Many-To-Many, Unidirectional¶
——–单向的
用户实体和Book实体, 多对多关系
class User
/** * @var * * * @ORM\ManyToMany(targetEntity="Book") * @ORM\JoinTable(name="t_users_books", * joinColumns={@ORM\JoinColumn(name="t_user_id", referencedColumnName="t_id")}, * inverseJoinColumns={@ORM\JoinColumn(name="t_book_id", referencedColumnName="b_id")} * ) * * */ private $books;
class Book
这种单项的关系,在另外的实体类里不要写上属性, /** * @var * @ORM\ManyToOne(targetEntity="Author", inversedBy="books") * @ORM\JoinColumn(name="author_id", referencedColumnName="a_id") */ private $author; //这里我在Book实体中把User注释了 // private $users; public function __construct() { $this->users = new ArrayCollection(); $this->categories = new ArrayCollection(); }
这时候实体类已经设计好了, 执行验证, 测试是否正确
php app\console doctrine:schema:validate
如果控制台报
[Mapping] OK - The mapping files are correct.[Database] FAIL - The database schema is not in sync with the current mapping file.
继续执行更新实体类, 设置set get 方法,
php app\console generate:doctrine:entities HelloBundle
然后你再执行php app\console doctrine:schema:validate 验证时, 成功通过
F:\Zend\workspaces\my_project_name>f:\Zend\\workspaces\php-v\php app\console doctrine:schema:update --forceUpdating database schema...Database schema updated successfully! "12" queries were executed
即可执行更新实体类到数据库
php app\console doctrine:schema:update --force
Many-To-Many, Bidirectional
–双向关系
class User
/** * @ManyToMany(targetEntity="Book", inversedBy="users") * @JoinTable(name="t_users_books") */ private $books; public function __construct() { $this->groups = new \Doctrine\Common\Collections\ArrayCollection(); }
class Book
/** * @ManyToMany(targetEntity="User", mappedBy="books") */ private $users; public function __construct() { $this->users = new \Doctrine\Common\Collections\ArrayCollection(); }
这时候实体设计完成, 在执行php app\console doctrine:schema:validate验证时, 报错
The referenced column name 'id' has to be a primary key column on the target entity class 'MyFirst\HelloBundle\Entity\User'.
原因是双向关系(多对多)在生成第三方关系表时, 不能成功设置外键,
解决方案 请采用第一种
form godruoyi supper
1 0
- Doctrine学习笔记(实体ManyToMany) —— 4
- Doctrine学习笔记(实体) —— 2
- Doctrine学习笔记(实体OneToOne) —— 3
- Doctrine学习笔记 —— 1
- 实体关系之@ManyToMany
- 实体关系之@ManyToMany
- 实体关系之@ManyToMany
- 【EJB学习笔记】——实体Bean
- 实体框架学习笔记(一) -- 实体定义
- EMF学习笔记1——模型实体类
- Hibernate学习笔记——hibernate实体映射
- Hibernate学习笔记——Hibernate实体关联
- EF学习笔记——生成自定义实体类
- 学习笔记——cad.net 插入实体
- EF学习笔记——生成自定义实体类
- myBatis学习笔记(3)——实体属性名与表字段名不匹配问题
- [XML]学习笔记(二)——DTD的声明与实体
- HTML学习笔记(十三)字符实体
- 装B锦句
- android菜单详解四:子菜单
- Error Domain class not found for name User
- iOS 基本数据类型与函数
- 3.3趣味整数之高次方数的尾数
- Doctrine学习笔记(实体ManyToMany) —— 4
- git配置
- 在ScrollView中显示一个长图,图片的适配拉伸方法
- 关于tableview中cell的一些加载
- 背包算法研究
- 奇虎360 2016实习生招聘 技术综合G(编程题)
- Mybatis与Ibatis比较
- 在eclipse中对hadoop集群文件的简单操作
- Android自动测试之Monkey工具