• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

刚开始学symfony2框架,哪位师兄能指教一下一对多映射怎么做么?有命令生成不?

php 搞代码 3年前 (2022-01-25) 7次浏览 已收录 0个评论
文章目录[隐藏]
<code class="lang-php">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;}</code>

回复内容:

<code class="lang-php">cla<span style="color:transparent">~来1源gaodai#ma#com搞*代#码1网</span><abbr>搞代gaodaima码</abbr>ss 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;}</code>

友情提示:Doctrine 2的Mapping信息(映射信息)可以用XML,YAML,PHP和注解这四种格式来编写。

A和B的一对一关系,在数据库里,可以在A上弄个字段存相应B记录的ID,也可以反过来在B上存A的ID,也可以互相存ID,这个是Doctrine 2里所说的关联方向。

你问题例子里的是注解方式的,那我就说注解的:

(1)单向,在A表上产生一个字段来存B的ID。

<code class="lang-php">/** @Entity **/class A{    // ...    /**     * @OneToOne(targetEntity="B")     * @JoinColumn(name="b_id", referencedColumnName="id")     **/    private $b;    public function getB()    {        return $this->b;    }}/** @Entity **/class B{    // ...}</code>

在拿到A的情况下,可以用$a->getB()来获得与$a关联的B。

joinColumn那一句,大多数情况是可以省略的,Doctrine 2会自动生成关联字段的名称。

(1)双向

<code class="lang-php">/** @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;    }}</code>

$a->getB()和$b->getA(),都可以直接取关联对象。

targetEntity(关联哪个对象/表)里多了一个mappedBy和inversedBy,他们的值,其实就是被关联对象上用来保存关联ID的属性的名字。

标记了mappedBy的,将成为关联关系的“拥有者”。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:刚开始学symfony2框架,哪位师兄能指教一下一对多映射怎么做么?有命令生成不?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址