我有两个型号
user.php的
public function opportunities()
{
return $this->hasMany('App\Opportunity');
}
Opportunity.php
public function user()
{
return $this->belongsTo('App\User');
}
每次用户发布记录时,我在商机表中都有user_id
列并插入了用户ID(来自使用Auth的用户表)。
现在我需要一个返回&#34的视图;此帖子已发布此用户" 。
首先我通过
找到帖子ID$posts = Opportunity::find($id);
$posted_by = User::find($posts->user_id);
return view('opportunity.detail')->with('post', $posts, 'posted_by', $posted_by);
我已按{{$posted_by->name}}
但是我在视图文件$posted_by
中得到了未定义的常量,而$post
没问题。我是以正确的方式做到的吗?我将两个数组变量传递给帖子,但它无法正常工作。任何帮助将不胜感激。
答案 0 :(得分:3)
您的控制器可能如下所示:
return view('opportunity.detail', [
'post' => Opportunity::find($id);
]);
在显示用户名的视图中:
Post {{ $post->title }} posted by {{ $post->user->name }}
https://laravel.com/docs/5.5/eloquent-relationships#relationship-methods-vs-dynamic-properties
如果由于某种原因您想使用->with()
,请执行以下操作:
->with(['post' => $posts, 'posted_by' => $posted_by]);
或者:
->with('post', $posts)->with('posted_by', $posted_by);
答案 1 :(得分:0)
你可以把这个
public function getUserName() {
return User::where('id', $this->user_id)->first()->name;
}
在您的Opportunity.php模型中并在您查看中调用
@foreach ($posts as $post)
{{ $post->getUserName() }}
@endforeach