代码之家  ›  专栏  ›  技术社区  ›  EasyWay

以Laravel关系中的一对一关系视图显示

  •  2
  • EasyWay  · 技术社区  · 8 年前

    我在这里再次遇到了一个问题,那就是我很难理解如何正确处理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
    
    2 回复  |  直到 8 年前
        1
  •  2
  •   fayis003    8 年前

    首先,请检查关系功能实现中的外键和本地键是否正确。在那之后,尝试将数据哑为

    dd($dataUser )
    

    并检查用户模型的关系属性是否实际包含关系模型如果其不为空,则可以访问如下属性

    $User->concessionaire->property
    

    如果关系属性显示为空,则可能在关系实现函数中放置了不正确的本地键或外键。

    你应该遵循

    $this->hasOne(Relation::class, 'foreign key in related model', 'local key')
    
        2
  •  -1
  •   FULL STACK DEV    8 年前
    function concessionaire()
     {
       return $this->hasOne( Concessionaire::class, 'user_id', 'id');
     }
    

    现在,您可以使用

    @foreach($dataUser as $User)
      <td>
        {{ $User->concessionaire->property }}
     </td>
    @endforeach
    

    希望这有帮助

    推荐文章