刚开始学symfony2框架,哪位师兄能指教一下一对多映射怎么做么?有命令生成不?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了刚开始学symfony2框架,哪位师兄能指教一下一对多映射怎么做么?有命令生成不?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2859字,纯文字阅读大概需要5分钟。
内容图文
![刚开始学symfony2框架,哪位师兄能指教一下一对多映射怎么做么?有命令生成不?](/upload/InfoBanner/zyjiaocheng/235/8057f507d331485ea2524a58ca3229b0.jpg)
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的,将成为关联关系的“拥有者”。
内容总结
以上是互联网集市为您收集整理的刚开始学symfony2框架,哪位师兄能指教一下一对多映射怎么做么?有命令生成不?全部内容,希望文章能够帮你解决刚开始学symfony2框架,哪位师兄能指教一下一对多映射怎么做么?有命令生成不?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。