我在两个表之间有关系:提案和主管。我正在检索所有建议并将其传递给视图。我要打印的是提议人的名字。表格“投标”中有一列“ Supervisor_ID”。
注意:该代码几天前已经完美运行,但是现在我遇到了这个错误。
Proposal.php
public function supervisor(){
return $this->belongsTo('App\Supervisor');
}
Supervisor.php
public function proposals(){
return $this->hasMany('App\Proposal','id', 'supervisor_ID');
}
index.blade.php
@foreach($proposals as $proposal)
{{$proposal->supervisor->last_name}}, {{$proposal->supervisor->first_name}}
@endforeach
答案 0 :(得分:0)
我认为您在通话时不包括supervisor
关系。为此,您应该在Proposal.php
文件中添加以下行
protected $with = ["supervisor"];
答案 1 :(得分:0)
您的关系定义有误。 supervisor()
关系可能无法正常工作,因为您使用的列名称不遵循Laravel默认架构(但是,由于大多数SQL系统在使用列名称时均不区分大小写,因此出现此问题的可能性非常大小)。但是另一方面,proposals()
关系的参数顺序错误,这肯定是一个问题。您还必须在supervisor()
关系上添加其他参数。
解决上述问题后,您应该具有以下内容:
// Proposal.php
public function supervisor()
{
return $this->belongsTo(Supervisor::class, 'Supervisor_ID', 'id');
}
// Supervisor.php
public function proposals()
{
return $this->hasMany(Proposal::class, 'Supervisor_ID', 'id');
}
请注意,正如您所写,我也将supervisor_ID
更改为Supervisor_ID
。还要注意,如果类Supervisor::class
在App\Supervisor
命名空间中,则Supervisor
是App
的PHP常量。使用这种表示法不仅看起来更简洁,而且还可以对IDE和其他工具进行更好的静态代码分析。
答案 2 :(得分:0)
我已经尝试了建议的解决方案,但有些解决方案也出现了同样的问题。我通过删除模型关系中的所有其他参数解决了该问题。事实证明,如果相应地命名数据库中的表字段,框架将自动执行关系。
当前工作代码:
class MutationOnMount extends React.Component {
componentDidMount() {
this.props.mutation(); // Run mutation on Mount
}
render() {
return this.props.children;
}
}
谢谢你们:)