我的表格有以下实体结构:https://gist.github.com/melokki/e2e0d7c03ee71c37c1185602562da6af
$movie = $repository->findOneBy([
'title' => 'movie title',
]);
我正在尝试访问这样的电影来源:
$movie->getSources()
根据我可以做的文档,但是现在我收到以下通知
Notice: Undefined index: movie
我无法理解为什么
我的代码有问题吗?
答案 0 :(得分:0)
根据您实体的github链接:
<强>第一强>
由于您的电影课程中没有名为$movie->getSources()
的字段,因此您无法$sources
<强>第二强>
在您的电影实体中,有一个名为$movieSource
的字段,它是一对多的关系。应将其重命名为$movieSources
,因为您将返回MovieSource对象的ArrayCollection
我怀疑,你想用Movie&lt; - &gt;建模一个ManyToMany关系源?
如果是,您可以直接将这些实体相互链接而不必担心中间表,学说会为您做到这一点。
如果没有实际用途,我强烈建议丢弃中间表。
但是如果你想保留这个模型,你必须调用(在更改方法名称后)
$movie->getMovieSources()
并遍历此集合。
for ($movie->getMovieSources() as $movieSource) {
$moviesource->getSource();
}
最有可能的是,您的原始问题错误随着这些变化而消失。
答案 1 :(得分:0)
我运行了doctrine:schema:validate命令,现在我觉得我得到了它。
我的问题是,在MovieSchema
$movie
属性中,我对该字段有两个注释:@ORM\Column(type="string", name="movie_id")
和@ORM\JoinColumn(name="movie_id", referencedColumnName="id", nullable=false)
。
我删除了第一个,现在我在调用getSources方法时得到了所需的结果。
非常感谢您的所有时间。