首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Laravel 5.6中检索视图中的Has One关系

如何在Laravel 5.6中检索视图中的Has One关系
EN

Stack Overflow用户
提问于 2018-11-14 15:44:44
回答 3查看 171关注 0票数 3

我有一个关系,其中一个用户有许多电子邮件,而一封电子邮件属于一个用户。我在我的消息模型中是这样定义的:

代码语言:javascript
复制
public function users() {
    return $this->belongsTo('App\User','sender_id','id');
}

这是我的控制器:

代码语言:javascript
复制
 $sender_name = Message::with('users')->get();
 return view('admin.message.read',compact('message','sender_name'));

在我看来,我这样做:

代码语言:javascript
复制
 @foreach($sender_name as $sender_names)
  @php(
  dd($sender_name)
  )
    {{$sender_name->name}}
 @endforeach

所以,这里我有两个问题:

  1. 如何检索我在视图中定义的关系?当前,我收到一个错误,集合上不存在此属性!
  2. 我是否需要像这样在用户模型中定义相反的关系?:

代码语言:javascript
复制
    public function messages() {
        $this->hasOne('App\Message','id','sender_id');
    }

以下是该视图的代码:

代码语言:javascript
复制
<div class="media-body">
    <h6 class="media-heading">{{$message->title}}</h6>
    <!-- sender name of Email-->
    <div class="letter-icon-title text-semibold">
        @foreach($sender_name as $sender_names)
            {{$sender_names->users->name}}
        @endforeach
    <!-- sender name of Email-->

    <!-- sender Email-->
        <a href="#">jira@diakultd.atlassian.net</a>
    </div>
    <!-- sender name of Email-->
</div>
<!-- body of Email-->
<table width="600" border="0" cellpadding="0" cellspacing="0" align="center">
    <tr>
        <td valign="middle" align="center" style="font-size: 40px; color: #ffffff; line-height: 50px; font-weight: 300;">   
        </td>
    </tr>
</table>
<!-- /title -->
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-11-14 15:53:46

因为您想要获取添加了此消息的用户。因此,您要通过其模型获取消息,并通过关系在其中添加用户,这就是您需要在消息模型中定义它的原因。

要在视图中使用它,您可以使用

代码语言:javascript
复制
@foreach($sender_name as $sender_names)
    {{$sender_names->users->name}}
@endforeach

要研究关系,Laravel有一个很好的文档https://laravel.com/docs/5.7/eloquent-relationships

票数 2
EN

Stack Overflow用户

发布于 2018-11-14 15:51:35

你应该试试这个

代码语言:javascript
复制
@foreach($sender_name as $sender_names)  
    {{$sender_names->users->name}}
@endforeach
票数 2
EN

Stack Overflow用户

发布于 2018-11-14 18:20:43

下面是发生在我身上的情况:人们说foreach循环是真的,但是我有一些其他的问题,我可以不使用foreach来显示发件人id。

代码语言:javascript
复制
public function show(Message $message)                                                                       
 {                                                                                                                                                                                                                       
     $sender_name = Message::with('users')->where('sender_id', $message->sender_id)->first();                 
        Message::with('users')->get();                                                                        
     return view('admin.message.read',compact('message','sender_name'));                                      
 } 

就像在视图中打印它一样简单

代码语言:javascript
复制
{{$sender_name->users->name}}

像这样,你可以打印电子邮件发件人的名字

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53295252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档