如何解决Livewire Relation Ship无法与财产一起使用
好的,谢谢您,如果他们能帮助我解决这个问题。我实际上在Laravel中遇到了Livewire的新问题。
控制器
class ViewCourse extends Component{
public $course;
public function mount($id,$name = null,$mediaID = null){
$this->course = course::findOrfail($id);
}
public function render(){
return view('livewire.view-course')->extends('layouts.app');
}
关系模型
class course extends Model{
public function teacher(){
return $this->hasOne('App\Models\User','id','user_id')->select('name','picture');
}
}
刀片代码
<p>{{$course->teacher->name}}</p>
我的错误
ErrorException
Trying to get property 'name' of non-object (View: C:\xampp\htdocs\rstacode\resources\views\livewire\view-course.blade.php)
解决方法
问题是您没有选择Laravel正确解决关系并获取用户模型所需的列。
您可以删除选择或将id
列添加到选择中:
删除选择项:
public function teacher()
{
return $this->hasOne('App\Models\User','id','user_id');
}
将必需的列添加到选择中:
public function teacher()
{
return $this->hasOne('App\Models\User','user_id')
->select([
'id','name','picture',]);
}
我个人只是删除选择,因为从关系中仅选择几列看不到任何价值。另外,如果您向用户表中添加更多列,则可能会在以后引起更多的麻烦。
,即使集合为空,您也总是试图从对象访问属性,这就是发生问题的原因。
在打印之前始终检查集合是否具有关联的关系数据。
如果您在PHP 7.*
{{ $course->teacher->name ?? '' }}
在PHP 7.*
之前
{{ (isset($course->teacher->name) && !empty($course->teacher->name)) ? $course->teacher->name : '' }}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。