如何在 symfony2 中使用其他 2 个表的主键创建一个表


How do I create a table with the primary keys of 2 other tables in symfony2?

>我有这样一种情况,我有 2 个表,想要创建一个第三个表,其列只是 2 个表的 2 个主键。这2张表是:-

Events.php
<?php
namespace InstituteEvents'StudentBundle'Entity;
use Doctrine'ORM'Mapping as ORM;
/**
 * @ORM'Entity
 * @ORM'Table(name="institute_event_details")
 */
class Events
{
/**
 * @ORM'Id
 * @ORM'Column(type="integer")
 * @ORM'GeneratedValue(strategy="AUTO")
 */
protected $eid;
/**
 * @ORM'Column(name="eventname",type="string", length=50)
 */
protected $eventname;
public function getEId() {
    return $this->eid;
}
public function getEventname()
{
    return $this->eventname;
}
public function setEventname($eventname)
{
    $this->eventname = $eventname;
    return $this;
}
}   

学生.php

namespace InstituteEvents'StudentBundle'Entity;
use FOS'UserBundle'Model'User as BaseUser;
use Symfony'Component'Validator'Constraints as Assert;
use Doctrine'ORM'Mapping as ORM;
/**
 * @ORM'Entity
 * @ORM'Table(name="institute_student_details")
 */
class Student extends BaseUser
{
/**
 * @ORM'Id
 * @ORM'Column(type="integer")
 * @ORM'GeneratedValue(strategy="AUTO")
 */
protected $uid;
/**
 * @ORM'Column(name="firstname",type="string", length=50)
 * @Assert'NotBlank(),
 * @Assert'Length(
 *      min = 3,
 *      max = 100,
 *      minMessage = "Your name must be at least {{ limit }} characters long",
 *      maxMessage = "Your name cannot be longer than {{ limit }} characters long")
 * @Assert'Regex(
 *     pattern="/'d/",
 *     match=false,
 *     message="Your name cannot contain a number")
 */
protected $firstname;
/**
 * @ORM'Column(name="lastname",type="string", length=50)
 * @Assert'Length(
 *      min = 3,
 *      max = 100,
 *      minMessage = "Your name must be at least {{ limit }} characters long",
 *      maxMessage = "Your name cannot be longer than {{ limit }} characters long")
 * @Assert'Regex(
 *     pattern="/'d/",
 *     match=false,
 *     message="Your name cannot contain a number")
 */
protected $lastname;
/**
 * @Assert'NotBlank()
 * @Assert'Email()
 * 
 */
protected $email;
/**
 * Plain password. Used for model validation. Must not be persisted.
 * @Assert'NotBlank()
 * 
 */
protected $plainPassword;
public function getFirstname()
{
    return $this->firstname;
}
public function getLastname()
{
    return $this->lastname;
}
public function setFirstname($firstname)
{
    $this->firstname = $firstname;
    return $this;
}
public function setLastname($lastname)
{
    $this->lastname = $lastname;
    return $this;
}
function getEmail() {
    return $this->email;
}
function getPlainPassword() {
    return $this->plainPassword;
}
function setEmail($email) {
    $this->email = $email;
}
function setPlainPassword($plainPassword) {
    $this->plainPassword = $plainPassword;
}
public function __construct()
{
    parent::__construct();
    // your own logic
}
}

现在,我想在数据库中创建一个新表"订阅",其列只有"uid"和"eid"。现在很多"学生"可以报名参加很多"活动"。这些表之间的关系是什么,我在哪里指定这些:-

订阅.php

<?php
namespace InstituteEvents'StudentBundle'Entity;
use Doctrine'ORM'Mapping as ORM;
/**
 * @ORM'Entity
 * @ORM'Table(name="institute_subscription_details")
 */
class Subscription
{
/**
 * @ORM'Id
 * @ORM'Column(type="integer")
 */
protected $uid;
/**
 * @ORM'Id
 * @ORM'Column(type="integer")
 */
protected $eid;
 public function getUId() {
    return $this->uid;
}
 public function getEId() {
    return $this->eid;
}
}   

如何在数据库中创建这些表以及这些表之间的关系是什么,条件是:- 许多"学生"可以注册许多"事件",许多"事件"可以有许多"学生"????

我不知道

为什么你需要额外的实体。DoctrineORM提供多对多双向关系。

http://doctrine-orm.readthedocs.org/en/latest/reference/association-mapping.html#many-to-many-bidirectional