【问题标题】:Different foreign key and ManyToOne in DoctrineDoctrine中的不同外键和ManyToOne
【发布时间】:2011-07-09 16:41:18
【问题描述】:

我只是学说的初学者。

我有 2 张桌子,书和章节

BOOK[ BID, NAME ]
CHAPTER[ CID, BID, ChapName ]

章节类:

/**
 * @Id
 * @Column(type="bigint", nullable=false)
 * @GeneratedValue(strategy="AUTO")
 */
private $cid;
/**
 * @ManyToOne(targetEntity="Book", inversedBy="Chapters")
 * @var Book
 */
private $Book;

图书课:

/**
 * @Id
 * @Column(type="bigint", nullable=false)
 * @GeneratedValue(strategy="AUTO")
 */
private $bid;
/**
 * @OneToMany(targetEntity="Chapter", mappedBy="Book", cascade={"persist", "remove", "merge"}, orphanRemoval=true))
 * @var Chapter[]
 */
private $Chapters;

我不确定它是否正确,但是当我尝试查询章节以获取章节 ID 1 时。这是错误:

Unknown column 't0.Book_id' in 'field list'' 

但如果我尝试调用“$book->getChapters()->first()->getChapName()”。我明白了。错误:

A PHP Error was encountered

Severity: Notice

Message: Undefined index: id

Filename: Persisters/BasicEntityPersister.php

Line Number: 1193

可能是什么问题,因为我很困惑。

谢谢

【问题讨论】:

    标签: php codeigniter doctrine


    【解决方案1】:

    您必须在 $Book 上使用@JoinColumn。 这是必需的,因为您不使用默认列名。

    代码:

    /**
     * @ManyToOne(targetEntity="Book", inversedBy="Chapters")
     * @JoinColumn(name="BID", referencedColumnName="cid")
     * @var Book
     */
    private $Book;
    

    以下是有关学说映射的完整文档: http://www.doctrine-project.org/docs/orm/2.0/en/reference/association-mapping.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-16
      • 1970-01-01
      • 1970-01-01
      • 2015-11-25
      • 1970-01-01
      • 1970-01-01
      • 2016-09-16
      • 1970-01-01
      相关资源
      最近更新 更多