So I’m working on a blog website and I want to associate users with certain posts and posts with certain users. So I have a profile page that displays the current logged in user’s info but doesn’t pass the posts related to the user. I dont know if its my model relations that are wrong but i keep getting the posts not defined error. Here is my ProfileController
JavaScript
x
<?php
namespace AppHttpControllers;
use AppReviews;
use IlluminateFoundationAuthUser;
use IlluminateHttpRequest;
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 ]);
}
}
Here is my Post model’s user method
JavaScript
public function user(){
return $this->belongsTo('AppUser');
}
Here is my User model’s posts method
JavaScript
public function posts(){
return $this->hasMany('AppPost');
}
Here is how i output it in the view
JavaScript
@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
Advertisement
Answer
You have an error in the view return. It should be:
JavaScript
return view('profile', ['users' => $user, 'posts' => $post]);
Please see: https://laravel.com/docs/7.x/blade#displaying-data