试图在视图中获取非对象的财产 - laravel



同一主题存在很多问题,但是在我的代码中,我看不出我的错误

试图获得非对象的属性

我的模型似乎还不错。这个问题可以从我的数据库关系中结果吗?

父母

  public function up()
    {
        Schema::create('parents', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('phone');
            $table->integer('user_id')->unsigned()->nullable();
            $table->foreign('user_id')->references('id')->on('users')->onUpdate('cascade')->onDelete('cascade'); 
            $table->timestamps();
        });
    }

儿童

public function up()
    {
        Schema::create('children', function (Blueprint $table) {
            $table->increments('id');
            $table->string('parent_phone')->references('phone')->on('parents')->onUpdate('cascade')->onDelete('cascade'); 
            $table->timestamps();
        });
    }

Childmodel

public function parents(){
      return $this->belongsTo(Parent::class, 'parent_phone');
  }

查看

 @foreach ($item->parents as $parent)
        <td>{{ $parent->child }} <br/>
        <small>{{ $parent->created_at }}</small>
        <br>
        <small>{{ $parent->parents->name }}</small>
        </td>
      @endforeach

您的关系不太正确。

由于您的外键(parent_phone(没有引用parents表上的主键(id(,因此您需要在其引用的parents上指定字段的名称。这是使用belongsTo()方法的第三个参数完成的。您的关系应该看起来像:

public function parents(){
    return $this->belongsTo(Parent::class, 'parent_phone', 'phone');
}

您可以在此处的文档中阅读有关雄辩关系的更多信息。

即使在纠正了关系之后,您的视图仍然可能会返回此错误,因为此行:

{{ $parent->parents->name }}

如果您的parent记录没有parent记录,则您将尝试在null上访问->name,这将丢弃错误。

最新更新