Laravel 5.8: 尝试获取 属性 'created_at' 的非对象
Laravel 5.8: Trying to get property 'created_at' of non-object
我正在使用 Laravel 5.8 开发我的项目,在这个项目中,我在 Member
模型和 [=17= 之间有一个 OneToMany 关系] 像这样的模型:
Student.php
:
public function member()
{
return $this->belongsTo(Student::class, 'std_mbr_id');
}
Member.php
:
public function student()
{
return $this->hasOne(Student::class,'std_mbr_id');
}
然后在控制器上,我添加了这个:
public function index()
{
$student = new Student();
$students = $student->searchStudents()->paginate(20);
$custom = new Student();
$customs = $custom->all();
return view('admin.students.custom', compact('students','customs'));
}
现在在视图中我想获得 created_at
时间戳,如下所示:
$customs->find($student->mbr_id)->created_at
但这会return这个错误:
正在尝试获取 属性 'created_at' 的非对象
然而,当我 dd($customs->find($student->mbr_id))
时,我可以正确获取时间戳:
那么在这种情况下如何访问 created_at
时间戳?
有很多可能抛出 `non-object 错误。
首先,请确保您已在 Student
模型中添加主键。
protected $primaryKey = 'std_id';
其次,如果您在 find()
方法中传递了错误的 $student->mbr_id
并直接访问特定列,它将引发错误:
请检查您的 blade 文件是否存在记录:
@if($customs->find($student->smbr_id))
{{ $customs->find($student->smbr_id)->created_at }}
@endif
希望您理解并解决。
为什么不利用 Eloquent 动态关系 属性(参见 https://laravel.com/docs/8.x/eloquent-relationships#one-to-many-inverse)并使用
$student->member->created_at
find()
使用主键,在本例中为 std_id。所以要与另一个领域合作,你应该做
$customs->where('std_mbr_id', $student->mbr_id)->first()->created_at
我正在使用 Laravel 5.8 开发我的项目,在这个项目中,我在 Member
模型和 [=17= 之间有一个 OneToMany 关系] 像这样的模型:
Student.php
:
public function member()
{
return $this->belongsTo(Student::class, 'std_mbr_id');
}
Member.php
:
public function student()
{
return $this->hasOne(Student::class,'std_mbr_id');
}
然后在控制器上,我添加了这个:
public function index()
{
$student = new Student();
$students = $student->searchStudents()->paginate(20);
$custom = new Student();
$customs = $custom->all();
return view('admin.students.custom', compact('students','customs'));
}
现在在视图中我想获得 created_at
时间戳,如下所示:
$customs->find($student->mbr_id)->created_at
但这会return这个错误:
正在尝试获取 属性 'created_at' 的非对象
然而,当我 dd($customs->find($student->mbr_id))
时,我可以正确获取时间戳:
那么在这种情况下如何访问 created_at
时间戳?
有很多可能抛出 `non-object 错误。
首先,请确保您已在 Student
模型中添加主键。
protected $primaryKey = 'std_id';
其次,如果您在 find()
方法中传递了错误的 $student->mbr_id
并直接访问特定列,它将引发错误:
请检查您的 blade 文件是否存在记录:
@if($customs->find($student->smbr_id))
{{ $customs->find($student->smbr_id)->created_at }}
@endif
希望您理解并解决。
为什么不利用 Eloquent 动态关系 属性(参见 https://laravel.com/docs/8.x/eloquent-relationships#one-to-many-inverse)并使用
$student->member->created_at
find()
使用主键,在本例中为 std_id。所以要与另一个领域合作,你应该做
$customs->where('std_mbr_id', $student->mbr_id)->first()->created_at