Orm 如何在与条令2.0的多对多关系中存储优先级

Orm 如何在与条令2.0的多对多关系中存储优先级,orm,many-to-many,doctrine-orm,Orm,Many To Many,Doctrine Orm,我的问题很简单: 我拥有多对多关系中的用户和故事,我想在UserStory关系中存储几个属性: 优先级(用于设置给定用户的显示顺序) 主要(标记哪一个是主要故事) 我该怎么做 假设我们有以下几点: <?php /** @Entity */ class User { // ... /** * @ManyToMany(targetEntity="Story", inversedBy="users") * @JoinTable(name="users_s

我的问题很简单:

我拥有多对多关系中的用户和故事,我想在UserStory关系中存储几个属性:

  • 优先级(用于设置给定用户的显示顺序)
  • 主要(标记哪一个是主要故事)
我该怎么做

假设我们有以下几点:

<?php
/** @Entity */
class User
{
    // ...

    /**
     * @ManyToMany(targetEntity="Story", inversedBy="users")
     * @JoinTable(name="users_stories")
     */
    private $stories;

    public function __construct() {
        $this->stories = new \Doctrine\Common\Collections\ArrayCollection();
    }

    // ...
}

/** @Entity */
class Story
{
    // ...
    /**
     * @ManyToMany(targetEntity="User", mappedBy="stories")
     */
    private $users;

    public function __construct() {
        $this->users = new \Doctrine\Common\Collections\ArrayCollection();
    }

    // ...
}
?>

正如Crozin所建议的,这个问题是以下问题的重复:

在我的具体案例中,解决方案很简单。多对多关系需要手动构建,额外的字段需要手动添加。因此,我们需要建立一种“一对一”的关系

下面是我的3个对象和每个属性的相关元信息:

<?php

/**
 * @Entity
 * @Table(name="users")
 */

class User{

    /**
     * @Id
     * @Column(type="integer", name="id")
     * @GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @OneToMany(targetEntity="UserStory", mappedBy="user")
     */
    private $user_stories;

    // ...
}


/**
 * @Entity
 * @Table(name="user_stories")
 */

class UserStory{
    /**
     * @Id
     * @Column(type="integer", name="id")
     * @GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @ManyToOne(targetEntity="User", inversedBy="user_stories")
     */
    private $user;

    /**
     * @ManyToOne(targetEntity="Story", inversedBy="user_stories")
     */
    private $stories;

    /**
     * @Column(type="integer")
     */
    private $priority;

    /**
     * @Column(type="integer")
     */
    private $priority_tmp;

    /**
     * @Column(type="integer")
     */
    private $main;

    // ...
}


/**
 * @Entity
 * @Table(name="stories")
 */

class Story
{
    /**
     * @Id
     * @Column(type="integer", name="id")
     * @GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @OneToMany(targetEntity="UserStory", mappedBy="stories")
     */
    private $user_stories;

    // ...
}
?>