douzhangwei5265 2018-03-26 14:38
浏览 231
已采纳

试图获取非对象的属性 - Laravel

There are lot of issues with this same topic but in my code, i don't see my error to be getting

Trying to get property of non-object

My models also seems alright. Could the issue results from my database relation?

Parents

  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();
        });
    }

Child

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');
  }

View

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

        </td>
      @endforeach
  • 写回答

1条回答 默认 最新

  • dongqi7631 2018-03-26 14:53
    关注

    Your relationship is not quite right.

    Because your foreign key (parent_phone) is not referencing the primary key (id) on the parents table, you need to specify the name of the field on parents that it references. This is done using the third parameter to the belongsTo() method. Your relationship should look like:

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

    You can read more about Eloquent relationships in the documentation here.

    Even after correcting the relationship, your view may still return this error because of this line:

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

    If your parent record does not have a parent record, you will be attempting to access ->name on null, and that'll throw the error.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?