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) &lt;td&gt; $User-&gt;clark &lt;/td&gt; @endforeach 如果出现在DD那么可以通过@foreach($dataUser as $User) &lt;td&gt; $User-&gt;concessionaire-&gt;property_name &lt;/td&gt; @endforeach的方式访问

以上是关于Laravel 关系中一对一关系的视图中显示的主要内容,如果未能解决你的问题,请参考以下文章

使用 laravel,我如何创建一个将更新一对多关系的视图?

Laravel一对一关系显示非对象属性

Access 链接表只显示一对一的关系

Laravel 5.5中的一对多关系

如何使用 laravel+VueJS 以一对一的关系获取数据

在视图中显示一对多关系sails.js waterline orm的列表