Laravel错误。试图获取非对象的属性

时间:2018-11-24 16:00:02

标签: php laravel

我在两个表之间有关系:提案和主管。我正在检索所有建议并将其传递给视图。我要打印的是提议人的名字。表格“投标”中有一列“ Supervisor_ID”。

注意:该代码几天前已经完美运行,但是现在我遇到了这个错误。

Laravel Error picture

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

3 个答案:

答案 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::classApp\Supervisor命名空间中,则SupervisorApp的PHP常量。使用这种表示法不仅看起来更简洁,而且还可以对IDE和其他工具进行更好的静态代码分析。

答案 2 :(得分:0)

我已经尝试了建议的解决方案,但有些解决方案也出现了同样的问题。我通过删除模型关系中的所有其他参数解决了该问题。事实证明,如果相应地命名数据库中的表字段,框架将自动执行关系。

当前工作代码:

class MutationOnMount extends React.Component {
  componentDidMount() {
    this.props.mutation(); // Run mutation on Mount
  }

  render() {
    return this.props.children;
  }
}

谢谢你们:)