Laravel 关系中一对一关系的视图中显示
Posted
技术标签:
【中文标题】Laravel 关系中一对一关系的视图中显示【英文标题】:Display in VIEW of One to One relation in Laravel Relationship 【发布时间】:2018-08-12 03:15:42 【问题描述】:我又来这里了,无法理解正确的 Laravel 关系处理方法
我有这个用户模型
public function concessionaire()
return $this->hasOne('App\Concessionaire', 'meternum', 'meternum');
和特许经营者模式
public function user()
return $this->belongsTO('App\User', 'meternum', 'meternum');
但是当我尝试在我的视图中显示它时。特许公司数据字段不显示..
在我的控制器中我有这个
$dataUser = User::where('usertype', '=', 'concessionaire')
->with('concessionaire')
->get();
return view('admin.concessionaire',compact('dataUser'));
在我看来
@foreach($dataUser as $User)
<td>
$User->clark
</td>
@endforeach
【问题讨论】:
尝试获取简单数据 我已经尝试过了,但是我的控制器上没有显示特许表上的数据字段 那里显示简单数据吗? 它只显示第一个表的数据,第二个表没有任何数据 能否请您展示您的数据库结构 【参考方案1】:function concessionaire()
return $this->hasOne( Concessionaire::class, 'user_id', 'id');
现在您可以使用
@foreach($dataUser as $User)
<td>
$User->concessionaire->property
</td>
@endforeach
希望对你有帮助
【讨论】:
它也不起作用:(我收到“尝试获取非对象的属性”的错误 我也用你的评论更新了我的工作,但仍然没有工作:(【参考方案2】:首先请检查关系函数实现中的外键和本地键是否正确。之后尝试使数据变笨
dd($dataUser )
并检查用户模型的关系属性是否实际包含关系模型,如果它不为空,您可以访问该属性,如
$User->concessionaire->property
如果关系属性显示为空,那么您可能在关系实现函数中放置了不正确的本地或外键。
你应该关注
$this->hasOne(Relation::class, 'foreign key in related model', 'local key')
【讨论】:
它出现在 DD 上,但我怎样才能获得这些值?@foreach($dataUser as $User) <td> $User->clark </td> @endforeach
如果出现在DD那么可以通过@foreach($dataUser as $User) <td> $User->concessionaire->property_name </td> @endforeach
的方式访问以上是关于Laravel 关系中一对一关系的视图中显示的主要内容,如果未能解决你的问题,请参考以下文章
使用 laravel,我如何创建一个将更新一对多关系的视图?