刚开始学symfony2框架,哪位师兄能指教一下一对多映射怎么做么?有命令生成不?
class Mapp { /** * @var integer $id * * @ORM\Column(name="id", type="integer", nullable=false) * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY") */ private $id; /** * @var string $name * * @ORM\Column(name="name", type="string", length=255, nullable=false) */ private $name; /** * @var string $saysay * * @ORM\Column(name="saysay", type="string", length=255, nullable=false) */ private $saysay; /** * @var string $log * * @ORM\Column(name="log", type="text", nullable=false) */ private $log; } class People { /** * @var integer $id * * @ORM\Column(name="id", type="integer", nullable=false) * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY") */ private $id; /** * @var string $name * * @ORM\Column(name="name", type="string", length=255, nullable=false) */ private $name; /** * @var string $discuss * * @ORM\Column(name="discuss", type="string", length=255, nullable=false) */ private $discuss; }
回复内容:
class Mapp { /** * @var integer $id * * @ORM\Column(name="id", type="integer", nullable=false) * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY") */ private $id; /** * @var string $name * * @ORM\Column(name="name", type="string", length=255, nullable=false) */ private $name; /** * @var string $saysay * * @ORM\Column(name="saysay", type="string", length=255, nullable=false) */ private $saysay; /** * @var string $log * * @ORM\Column(name="log", type="text", nullable=false) */ private $log; } class People { /** * @var integer $id * * @ORM\Column(name="id", type="integer", nullable=false) * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY") */ private $id; /** * @var string $name * * @ORM\Column(name="name", type="string", length=255, nullable=false) */ private $name; /** * @var string $discuss * * @ORM\Column(name="discuss", type="string", length=255, nullable=false) */ private $discuss; }
友情提示:Doctrine 2的Mapping信息(映射信息)可以用XML,YAML,PHP和注解这四种格式来编写。
A和B的一对一关系,在数据库里,可以在A上弄个字段存相应B记录的ID,也可以反过来在B上存A的ID,也可以互相存ID,这个是Doctrine 2里所说的关联方向。
你问题例子里的是注解方式的,那我就说注解的:
(1)单向,在A表上产生一个字段来存B的ID。
/** @Entity **/ class A { // ... /** * @OneToOne(targetEntity="B") * @JoinColumn(name="b_id", referencedColumnName="id") **/ private $b; public function getB() { return $this->b; } } /** @Entity **/ class B { // ... }
在拿到A的情况下,可以用$a->getB()来获得与$a关联的B。
joinColumn那一句,大多数情况是可以省略的,Doctrine 2会自动生成关联字段的名称。
(1)双向
/** @Entity **/ class A { // ... /** * @OneToOne(targetEntity="B", mappedBy="a") **/ private $b; public function getB() { return $this->b; } } /** @Entity **/ class B { // ... /** * @OneToOne(targetEntity="A", inversedBy="b") **/ private $a; public function getA() { return $this->a; } }
$a->getB()和$b->getA(),都可以直接取关联对象。
targetEntity(关联哪个对象/表)里多了一个mappedBy和inversedBy,他们的值,其实就是被关联对象上用来保存关联ID的属性的名字。
标记了mappedBy的,将成为关联关系的“拥有者”。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

CakePHP 是 PHP 的开源框架。它的目的是使应用程序的开发、部署和维护变得更加容易。 CakePHP 基于类似 MVC 的架构,功能强大且易于掌握。模型、视图和控制器 gu

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写
