【发布时间】:2020-07-06 10:55:40
【问题描述】:
所以我正在开发一个博客网站,我想将用户与某些帖子和帖子与某些用户相关联。所以我有一个个人资料页面,显示当前登录用户的信息,但不传递与用户相关的帖子。我不知道我的模型关系是否错误,但我不断收到未定义的帖子错误。 这是我的 ProfileController
<?php
namespace App\Http\Controllers;
use App\Reviews;
use Illuminate\Foundation\Auth\User;
use Illuminate\Http\Request;
class ProfileController extends Controller
{
public function index()
{
$user_id=auth()->user()->id;
$users = User::find($user_id);
$user = User::where('id', $user_id)->get();
$post= $users->posts;
// $user=Auth::user();
//
// $post= $user->posts;
return view('profile')->with(['users' =>$user ],['posts' => $post ]);
}
}
这是我的 Post 模型的用户方法
public function user(){
return $this->belongsTo('App\User');
}
这是我的用户模型的帖子方法
public function posts(){
return $this->hasMany('App\Post');
}
这是我在视图中的输出方式
@foreach($users as $user)
<div class="card-body">
<h5 class="card-title">{{ $user->fname}}<br>{{ $user->lname}}</h5>
<h5 class="card-text">Email</h5>
<p class="h6">{{ $user->email}}</p>
<h5 class="card-text">Address</h5>
<p class="h6">Phenom Estate<br>{{$user->city}}, Kenya</p>
<h5 class="card-text">Award</h5>
<p class="h6">Globe Trotter</p>
<a href="#" class="btn btn-primary btn-block">Edit Profile</a>
</div>
@endforeach
@if (count($posts)>0)
@foreach($posts as $post)
<div class="well row">
<div class="col-md-4">
<img style="width: 100%; height: 300px" src="/storage/cover_images/{{$post->cover_image}}" alt="">
</div>
<div class="col-md-8">
<h3> <a href="/posts/{{$post->id}}">{{$post->title}}</a></h3>
<h3>{{$post->created_at}}</h3>
</div>
</div>
@endforeach
@endif
【问题讨论】:
-
我评论了你的最后一个问题,你错误地使用了
with...with(['users' => ..., 'posts' => ...])它是一个数组,它不需要2个数组作为参数...对于with取 2 个参数,第一个参数是键,第二个参数是值 -
@lagbox aaaah 我明白了。没注意到。非常感谢!
-
没问题.. Dan H 的回答是我更喜欢尽可能将数据传递给视图,创建视图并将数据同时传递给它...
with工作正常也很好