Php 访问实体中的OneToMany关系时未定义索引
我的表具有以下实体结构: 我正在尝试访问以下电影源:Php 访问实体中的OneToMany关系时未定义索引,php,symfony,doctrine,symfony4,Php,Symfony,Doctrine,Symfony4,我的表具有以下实体结构: 我正在尝试访问以下电影源: $movie->getSources() 根据文档,我可以这样做,但现在我收到以下通知 Notice: Undefined index: movie 我不明白为什么 我的代码有问题吗?基于您的实体的github链接: 首先 您不能执行$movie->getSources(),因为在您的movie类中没有名为$sources的字段 秒 在电影实体中有一个名为$movieSource的字段,它是一对多关系。应该重命名为$movieSou
$movie->getSources()
根据文档,我可以这样做,但现在我收到以下通知
Notice: Undefined index: movie
我不明白为什么
我的代码有问题吗?基于您的实体的github链接: 首先 您不能执行
$movie->getSources()
,因为在您的movie类中没有名为$sources
的字段
秒
在电影实体中有一个名为$movieSource
的字段,它是一对多关系。应该重命名为$movieSources
,因为您将获得MovieSource对象的ArrayCollection
我怀疑,你想和电影来源建立一个多方面的关系
如果是,您可以直接将这些实体相互链接,而不必担心中间表,doctrine会为您这样做
请看这里:
如果中间表没有实际用途,我强烈建议您放弃它
但是,如果您想保留此模型,则必须调用(更改方法名称后)
并对该集合进行迭代
for ($movie->getMovieSources() as $movieSource) {
$moviesource->getSource();
}
最有可能的是,您最初的ASQUED错误随着这些更改而消失。基于您的实体的github链接: 首先 您不能执行
$movie->getSources()
,因为在您的movie类中没有名为$sources
的字段
秒
在电影实体中有一个名为$movieSource
的字段,它是一对多关系。应该重命名为$movieSources
,因为您将获得MovieSource对象的ArrayCollection
我怀疑,你想和电影来源建立一个多方面的关系
如果是,您可以直接将这些实体相互链接,而不必担心中间表,doctrine会为您这样做
请看这里:
如果中间表没有实际用途,我强烈建议您放弃它
但是,如果您想保留此模型,则必须调用(更改方法名称后)
并对该集合进行迭代
for ($movie->getMovieSources() as $movieSource) {
$moviesource->getSource();
}
最有可能的是,您最初的ASQUED错误随着这些更改而消失。我已经运行了条令:schema:validate命令,现在我想我得到了它 我的问题是在
MovieSchema
中,对于$movie
属性,我有两个字段注释:@ORM\Column(type=“string”,name=“movie\u id”)
和@ORM\JoinColumn(name=“movie\u id”,referencedColumnName=“id”,nullable=false)
我已经删除了第一个,现在我在调用getSources方法时得到了所需的结果
非常感谢您花了这么多时间。我已经运行了条令:模式:验证命令,现在我想我明白了 我的问题是在
MovieSchema
中,对于$movie
属性,我有两个字段注释:@ORM\Column(type=“string”,name=“movie\u id”)
和@ORM\JoinColumn(name=“movie\u id”,referencedColumnName=“id”,nullable=false)
我已经删除了第一个,现在我在调用getSources方法时得到了所需的结果
非常感谢您花了这么多时间。错误消息可能重复,这意味着您正在尝试访问索引为“movie”的数组。可能与getSources()无关。可能是您忘记将$movie添加到细枝数据中了?只是胡乱猜测。在代码中搜索电影并查看弹出的内容。我不是试图从视图访问
getSources()
方法。我使用cli命令。根据《条令》的文件,我的实体是正确的,但不知何故,有些东西仍然是错误的,我看不出确切的原因。我知道缺少索引电影
,但我不知道如何设置它。通知来自basicintypersister
gist映射中没有任何内容真正跳出来。确保资源下没有任何旧的yaml/xml映射文件。要点没有显示Movie::getSources,所以我不知道这是否是问题所在。我也不知道Movie::movieSource是否是数组。拼写似乎表明不是。错误消息的可能重复表明您正在尝试访问索引为“movie”的数组。可能与getSources()无关。可能是您忘记将$movie添加到细枝数据中了?只是胡乱猜测。在代码中搜索电影并查看弹出的内容。我不是试图从视图访问getSources()
方法。我使用cli命令。根据《条令》的文件,我的实体是正确的,但不知何故,有些东西仍然是错误的,我看不出确切的原因。我知道缺少索引电影
,但我不知道如何设置它。通知来自basicintypersister
gist映射中没有任何内容真正跳出来。确保资源下没有任何旧的yaml/xml映射文件。要点没有显示Movie::getSources,所以我不知道这是否是问题所在。我也不知道Movie::movieSource是否是数组。拼写似乎表明不是。你是对的,我想在电影和源之间建立一个多对多关系模型,但同时我想在透视表(电影描述)上存储一些额外的信息,这可能是一件坏事,但是到目前为止,我还没有其他办法来存储电影描述,因为每个来源的电影描述都不一样。我的getSources
方法实际上返回对象的movieSource
属性,这就是我试图调用此方法的原因。我将尝试用完整的代码更新要点。另外,movieSource
属性是i
for ($movie->getMovieSources() as $movieSource) {
$moviesource->getSource();
}