【问题标题】:Display in VIEW of One to One relation in Laravel RelationshipLaravel 关系中一对一关系的视图中显示
【发布时间】: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

【问题讨论】:

  • 尝试获取简单数据
  • 我已经尝试过了,但是我的控制器上没有显示特许表上的数据字段
  • 那里显示简单数据吗?
  • 它只显示第一个表的数据,第二个表没有任何数据
  • 能否请您展示您的数据库结构

标签: php mysql laravel laravel-eloquent relationships


【解决方案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的方式访问
猜你喜欢
  • 2018-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-27
  • 1970-01-01
  • 1970-01-01
  • 2019-04-11
相关资源
最近更新 更多