如何在 Laravel 5.6 中检索视图中的 Has One 关系
How to retrieve a Has One relation in view in Laravel 5.6
我有一个用户有很多电子邮件的关系,一个电子邮件属于一个用户。我在我的消息模型中这样定义它:
public function users() {
return $this->belongsTo('App\User','sender_id','id');
}
这是我的控制器:
$sender_name = Message::with('users')->get();
return view('admin.message.read',compact('message','sender_name'));
在我看来,我是这样做的:
@foreach($sender_name as $sender_names)
@php(
dd($sender_name)
)
{{$sender_name->name}}
@endforeach
所以,我有两个问题:
- 如何检索我在视图中定义的关系?目前,我得到一个错误,这个 属性 在 collection 上不存在!!!
- 我需要在用户模型中这样定义对立关系吗? :
public function messages() {
$this->hasOne('App\Message','id','sender_id');
}
下面是围绕视图的代码:
<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 -->
你应该试试这个
@foreach($sender_name as $sender_names)
{{$sender_names->users->name}}
@endforeach
因为你想得到添加了这条消息的用户。因此,为此您正在通过其模型获取消息并通过关系在其中添加用户,这就是您需要在消息模型中定义它的原因。
要在视图中使用它,您可以使用
@foreach($sender_name as $sender_names)
{{$sender_names->users->name}}
@endforeach
研究关系 Laravel 有很好的文档 https://laravel.com/docs/5.7/eloquent-relationships
you can try like that
@foreach($sender_name as $sender_names)
{{$sender_names->users->name}}
@endforeach
see 这是一对一关系的好例子
所以这是发生在我身上的事情:
人们说的 foreach 循环是真的,但我有一些其他问题,我可以在没有 foreach 的情况下显示发件人 ID
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'));
}
打印出来就这么简单
{{$sender_name->users->name}}
像这样您可以打印电子邮件发件人的姓名
我有一个用户有很多电子邮件的关系,一个电子邮件属于一个用户。我在我的消息模型中这样定义它:
public function users() {
return $this->belongsTo('App\User','sender_id','id');
}
这是我的控制器:
$sender_name = Message::with('users')->get();
return view('admin.message.read',compact('message','sender_name'));
在我看来,我是这样做的:
@foreach($sender_name as $sender_names)
@php(
dd($sender_name)
)
{{$sender_name->name}}
@endforeach
所以,我有两个问题:
- 如何检索我在视图中定义的关系?目前,我得到一个错误,这个 属性 在 collection 上不存在!!!
- 我需要在用户模型中这样定义对立关系吗? :
public function messages() {
$this->hasOne('App\Message','id','sender_id');
}
下面是围绕视图的代码:
<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 -->
你应该试试这个
@foreach($sender_name as $sender_names)
{{$sender_names->users->name}}
@endforeach
因为你想得到添加了这条消息的用户。因此,为此您正在通过其模型获取消息并通过关系在其中添加用户,这就是您需要在消息模型中定义它的原因。
要在视图中使用它,您可以使用
@foreach($sender_name as $sender_names)
{{$sender_names->users->name}}
@endforeach
研究关系 Laravel 有很好的文档 https://laravel.com/docs/5.7/eloquent-relationships
you can try like that
@foreach($sender_name as $sender_names)
{{$sender_names->users->name}}
@endforeach
see 这是一对一关系的好例子
所以这是发生在我身上的事情: 人们说的 foreach 循环是真的,但我有一些其他问题,我可以在没有 foreach 的情况下显示发件人 ID
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'));
}
打印出来就这么简单
{{$sender_name->users->name}}
像这样您可以打印电子邮件发件人的姓名