首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Doctrine2:第一种OneToMany关系有效,第二种不起作用?

Doctrine2:第一种OneToMany关系有效,第二种不起作用?
EN

Stack Overflow用户
提问于 2012-12-31 16:52:36
回答 1查看 228关注 0票数 0

我有一个包含两个OneToMany关系的类。这是sql squema

这是不同的课程。

电影

代码语言:javascript
复制
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;

/**
 * @ORM\Entity
 * @ORM\Table(name="movies")
 * @property bigint $id
 * @property date $date
 * @property int $revision
 * @property string $original_title
 * @property string $thumbnail
 * @property string $plot
 */
class Movie {
    /**
    * @ORM\Id
    * @ORM\Column(type="bigint");
    * @ORM\GeneratedValue(strategy="AUTO")
    */
    protected $id;

    /**
    * @ORM\Column(type="date")
    */
    protected $date;

    /**
    * @ORM\Column
    * @ORM\Column(type="integer");
    */
    protected $revision;

    /**
    * @ORM\Column(type="string")
    */
    protected $original_title;

    /**
    * @ORM\Column(type="string")
    */
    protected $thumbnail;

    /**
    * @ORM\Column(type="string")
    */
    protected $plot;

    /**
     * @ORM\OneToMany(targetEntity="Exhibition", mappedBy="movie", cascade={"ALL"})
     */
    protected $exhibitions;

    /**
     * @ORM\OneToMany(targetEntity="Category", mappedBy="movie", cascade={"ALL"})
     */
    protected $categories;
}

展览会

代码语言:javascript
复制
/**
* @ORM\Entity
* @ORM\Table(name="exhibitions")
* @property bigint $id
* @property string $title
* @property string $type
*/
class Exhibition
{

    /**
    * @ORM\Id
    * @ORM\Column(type="bigint");
    * @ORM\GeneratedValue(strategy="AUTO")
    */
    protected $id;

    /**
    * @ORM\Column(type="string")
    */
    protected $title;

    /**
    * @ORM\Column(type="string")
    */
    protected $type;

    /**
     * @ORM\OneToMany(targetEntity="Schedule", mappedBy="exhibition", cascade={"ALL"})
     */
    protected $schedules;

    /** @ORM\ManyToOne(targetEntity="Movie", inversedBy="exhibitions") 
     *  @ORM\JoinColumn(name="movie", referencedColumnName="id", onDelete="CASCADE")
     */
    private $movie;

    /** @ORM\ManyToOne(targetEntity="Cinema", inversedBy="exhibitions") 
     *  @ORM\JoinColumn(name="cinema", referencedColumnName="name", onDelete="CASCADE")
     */
    private $where;
}

范畴

代码语言:javascript
复制
/**
 * @ORM\Entity
 * @ORM\Table(name="categories")
 * @property string $name
 */
class Category {
    /**
    * @ORM\Id
    * @ORM\Column(type="id")
    * @ORM\GeneratedValue(strategy="AUTO")
    */
    protected $name;

    /** 
     *  @ORM\ManyToOne(targetEntity="Movie", inversedBy="categories")
     *  @ORM\JoinColumn(name="movie", referencedColumnName="id", onDelete="CASCADE")
     */
    protected $movie;
}

正如您所看到的,展览和类别都是类电影中的OneToMany/ManyToOne关系。展览部分运作良好,但管理部分则不行。

每当我尝试使用,例如:$movies>类别时,我就会得到一个内部服务器错误。但是对于展览来说一切都很好。

我在这里错过了什么?这就是我的设计方法吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-08-31 04:21:32

可能是因为您的类别主键与数据模型不匹配。这里的变量应该是$id,而不是$name。

代码语言:javascript
复制
/**
* @ORM\Id
* @ORM\Column(type="id")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $name;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14104089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档