This means that one of the queries is returning null or the result you are looking for is returning null, so you check the status of the variables using dd() in your controller.
Jul 9, 2016
20
Level 1
Laravel 5: Trying to get property of non-object
Received this error
ErrorException in b836960d8afb261ac0cd337b0ac052bd22c615b4.php line 2:
Trying to get property of non-object (View: C:\wamp64\www\peepbox\resources\views\timeline\partials\friendtofriendstatusblock.blade.php) (View: C:\wamp64\www\peepbox\resources\views\timeline\partials\friendtofriendstatusblock.blade.php)
HomeController.php
class HomeController extends Controller {
public function index(Request $request) {
if(Auth::check()) {
$statuses = Status::NotReply()->NotFriendPostUserProfile()->where(function($query) {
return $query->where('user_id', Auth::user()->id)
->orWhereIn('user_id', Auth::user()->friends()->lists('id'));
})->orderBy('created_at', 'desc')->paginate(4);
$friendPosts = Status::NotReply()->FriendPostUserProfile()->where(function($query) {
return $query->where('user_id', Auth::user()->id)
->orWhereIn('user_id', Auth::user()->friends()->lists('id'));
})->orderBy('created_at', 'desc')->paginate(4);
if($request->ajax()) {
return view('timeline.ajax.index')->with('statuses', $statuses)->with('friendPosts', $friendPosts)->render();
}
return view('timeline.index')->with('statuses', $statuses)->with('friendPosts', $friendPosts);
}
return view('home');
}
}
timeline/indexx.blade.php
@extends('templates.default')
@section('content')
<div class="row">
<div class="col-lg-6">
<form role="form" action="{{ route('post.status') }}" method="post">
<div class="form-group{{ $errors->has('status') ? ' has-error' : '' }}">
<textarea placeholder="What's up {{ Auth::user()->getFirstNameOrUsername() }}?" name="status" class="form-control" rows="2"></textarea>
@if($errors->has('status'))
<span class = "help-block">{{ $errors->first('status') }}</span>
@endif
</div>
<button type="submit" class="btn btn-default">Post status</button>
<input type = "hidden" name = "_token" value = "{{ Session::token() }}">
</form>
<hr>
</div>
</div>
<div class="row">
<div class="col-lg-5">
@if(!$statuses->count())
<p>There's nothing in your timeline yet.</p>
@else
@foreach($statuses as $index => $status)
@include('timeline.partials.statusblock')
@include('timeline.partials.friendtofriendstatusblock')
@endforeach
{{ $statuses->render() }}
{{ $friendPosts->render() }}
@endif
</div>
</div>
@stop
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$document.ready(function() {
$('body').on('click', '.pagination a', function(e) {
e.preventDefault();
var page = $(this).attr('href');
$.get(page, function(data) {
$('.statuses').html(data);
});
});
});
</script>
timeline/partial/friendtofriendstatusblock.blade.php
<div class="media">
<a class="pull-left" href="{{ route('profile.index', ['username' => $friendPosts[$index]->user->username]) }}">
<img class="media-object" alt="{{ $friendPosts[$index]->user->getNameOrUsername() }}" src="{{ $friendPosts[$index]->user->getAvatarUrl() }}">
</a>
<div class="media-body">
<h4 class="media-heading"><a href="{{ route('profile.index', ['username' => $friendPosts[$index]->user->username]) }}">{{ $friendPosts[$index]->user->getNameorUsername() }}</a></h4>
<p>{{ $friendPosts[$index]->body }}</p>
<ul class="list-inline">
<li>{{ $friendPosts[$index]->created_at->diffForHumans() }}</li>
@if($friendPosts[$index]->likes->where('user_id', Auth::user()->id)->count() === 1)
<li><a href="{{ route('unlike.status', ['status_id' => $friendPosts[$index]->id]) }}">Unlike</a></li>
@elseif(Auth::user()->isFriendsWith($friendPosts[$index]->user) || Auth::user()->id === $friendPosts[$index]->user->id)
<li><a href="{{ route('like.status', ['status_id' => $friendPosts[$index]->id]) }}">Like</a></li>
@endif
@if($friendPosts[$index]->likes->count() !== 0)
<li>{{ $friendPosts[$index]->likes->count() }} {{ str_plural('like', $friendPosts[$index]->likes->count()) }}</li>
@endif
</ul>
@foreach($friendPosts[$index]->replies as $reply)
<div class="media">
<a class="pull-left" href="{{ route('profile.index', ['username' => $reply->user->username]) }}">
<img class="media-object" alt="{{ $reply->user->getNameOrUsername() }}" src="{{ $reply->user->getAvatarUrl() }}">
</a>
<div class="media-body">
<h5 class="media-heading"><a href="{{ route('profile.index', ['username' => $reply->user->username]) }}">{{ $reply->user->getNameOrUsername() }}</a></h5>
<p>{{ $reply->body }}</p>
<ul class="list-inline">
<li>{{ $reply->created_at->diffForHumans() }}</li>
@if($reply->likes()->where('user_id', Auth::user()->id)->count() > 0)
<li><a href="{{ route('unlike.status', ['status_id' => $reply->id]) }}">Unlike</a></li>
@elseif(Auth::user()->isFriendsWith($friendPosts[$index]->user) || Auth::user()->id === $reply->user->id || Auth::user()->id === $friendPosts[$index]->user->id)
<li><a href="{{ route('like.status', ['status_id' => $reply->id]) }}">Like</a></li>
@endif
@if($reply->likes->count() !== 0)
<li>{{ $reply->likes->count() }} {{ str_plural('like', $reply->likes->count()) }}</li>
@endif
</ul>
</div>
</div>
@endforeach
<form role="form" action="{{ route('reply.status', ['status_id' => $friendPosts[$index]->id, 'username' => $friendPosts[$index]->user->username]) }}" method="post">
<div class="form-group{{ $errors->has("reply-{$friendPosts[$index]->id}") ? ' has-error' : '' }}">
<textarea name="reply-{{ $friendPosts[$index]->id }}" class="form-control" rows="2" placeholder="Reply to this status"></textarea>
@if($errors->has("reply-{$friendPosts[$index]->id}"))
<span class="help-block">{{ $errors->first("reply-{$friendPosts[$index]->id}") }}</span>
@endif
</div>
<input type="submit" value="Reply" class="btn btn-default btn-sm">
<input type="hidden" name="_token" value="{{ Session::token() }}">
</form>
</div>
</div>
I think the problem is because of this @foreach($statuses as $index => $status), and causes error on this ['username' => $friendPosts[$index]->user->username] which is in friendtofriendstatusblock.blade.php
Please or to participate in this conversation.