YaSh Chaudhary YaSh Chaudhary - 2 months ago 9x
PHP Question

Call to undefined method (laravel 5.2)

I want to display friends of the user. But I am getting the following error:

BadMethodCallException in Builder.php line 2345: Call to undefined
method Illuminate\Database\Query\Builder::friends()



namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;

use App\User;

use Auth;

class FriendController extends Controller
public function getIndex(){
return view('friends',['friends'=>$friends]);


'uses' => 'FriendController@getIndex',
'as' => 'friends',
'middleware' => 'auth:web'

User model:

public function getName(){
if($this->firstname && $this->lastname){
return "{$this->firstname} {$this->lastname}";
return $this->firstname;
return null;

public function getNameOrUsername(){
return $this->getName() ?: $this->username;

public function getFirstNameOrUsername() {
return $this->firstname ?: $this->username;

My view:

<div id="grp" class="panel-heading">
<h3 id="grouptitle" class="panel-title">Your Friends</h3>
<p>you have no friends</p>
@foreach($friends as $user)


<div class="media">
<a href="{{ route('myplace', ['username'=>$user->username]) }}" class="pull-left">
<img src="" class="media-object" alt="{{ $user->getNameOrUsername() }}">
<div class="media-body">
<h4 class="media-heading"><a href="#">{{ $user->getNameOrUsername() }}</a></h4>



It seems like you are having many to many relationship between user model as user and its friends(again a user).So, we can use belongsToMany() method to retrieve the friends of selected user as Users.
To do so, add the following function to your User model.

public function friends(){
    return $this->belongsToMany('App\User::class','friends','user_id','friend_id')->withPivot('accepted');

To get the friends of currently loged in User use following:

$friends = Auth::user()->friends()->get();