同一主题存在很多问题,但是在我的代码中,我看不出我的错误
试图获得非对象的属性
我的模型似乎还不错。这个问题可以从我的数据库关系中结果吗?
父母
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
,这将丢弃错误。