相关疑难解决方法(0)

与一个实体的多个OneToMany关系

曾几何时,在黑暗的深渊中,有一些人在Symfony的土地深处,有一个沮丧的程序员.他尝试过并试过但不知何故,邪恶的教义一次又一次地被打击.还有恶棍Joins,Associative tablesOne-to-Many/Many-to-One给他一个艰难的时刻.然后,在一个傍晚StackOverflow,它的社区来救援.

足够的童话故事.我的问题是我有三个表应该都引用同一个表来获取附件.

- Mail
- Order
- Ticket
Run Code Online (Sandbox Code Playgroud)

这三个实体中的每一个都可以有附件.所以我创建了一个附件实体.

现在,我的数据库包含以下内容

Table: mails
- id
- from
- to
- message

Table attachments
- id
- name
- path

Table: orders
- id
- ...

Table: tickets
- id
- name
- description
- ...

Table attachment_associations
- id
- type
- parent_id
- attachment_id
Run Code Online (Sandbox Code Playgroud)

我想做的是能够将订单,票据和邮件映射到相同的附件表.

但是,我坚持如何在学说中做到这一点.

更新

我尝试使用以下方法.这确实得到了我正在寻找的记录.但我不知道如何使用此方法自动创建,更新或删除关联表(连接表)中的记录.

/**
 * @ORM\ManyToMany(targetEntity="\...\...\Entity\Attachment")
 * @ORM\JoinTable(name="attachment_associations",
 *      joinColumns={@ORM\JoinColumn(name="parentId", referencedColumnName="id")},
 *      inverseJoinColumns={
 *          @ORM\JoinColumn(name="attachmentId", referencedColumnName="id") …
Run Code Online (Sandbox Code Playgroud)

php symfony doctrine-orm

6
推荐指数
1
解决办法
215
查看次数

Symfony2中使用Doctrine注释的多个JoinColumn?

这是问题所在:

Routing具有属性objectId和的类objectTypeobjectId是一个int,objectType是一个字符串。这样做的原因是允许同一张表为不同种类的路由保存数据。例如ProductsDepartment和的路由Brand。因此,的组合objectTypeobjectId我JoinColumn。

如何使用Doctrine2建立这种双向关系?我查看了继承的关系,但是这些概念似乎都不是我想要的。

我可以在数据库中创建一些视图,并且只有几个不同的Routing实体,但这似乎不是最佳途径。

这是我的实体DepartmentProductBrand

../Entity/Department.php

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity()
 * @ORM\Table(name="departments")
 */
class Department implements DescribableInterface
{
    /**
     * @ORM\Id
     * @ORM\Column(name="id", type="integer", length=11)
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\Column(name="status", type="string", length=1)
     */
    private $status;

    /**
     * @ORM\Column(name="name", type="string", length=255)
     */
    private $name;
...
Run Code Online (Sandbox Code Playgroud)

../Entity/Product.php

use Doctrine\ORM\Mapping as ORM; …
Run Code Online (Sandbox Code Playgroud)

annotations join symfony doctrine-orm

2
推荐指数
1
解决办法
6260
查看次数

标签 统计

doctrine-orm ×2

symfony ×2

annotations ×1

join ×1

php ×1