2017-10-22 55 views
0

我在應用程序\用戶模型文件中的以下方法獲取用戶相關建築

Public function buildings(){ 
     return Building::whereHas('area', function ($q) { 
      $q->whereHas('users', function ($q) { 
       $q->where('users.id', auth()->id()); 
      }); 
     })->get(); 
    } 

當我試圖讓在查看文件中的用戶的建築物,我得到這個錯誤:

@foreach (Auth::user()->buildings as $b) 
    {{$b->name}} 
       @endforeach 

App \ User :: buildings必須返回關係實例。 (查看:C:\ xampp \ htdocs \ hse \ resources \ views \ observations \ form_observation.blade.php)

我試過了web.php中的代碼,它的工作原理意味着關係設置是完美的,但是我希望它在用戶模型

Route::get('/', function() { 
    return App\Building::whereHas('area', function ($q) { 
$q->whereHas('users', function ($q){ 
    $q->where('users.id',11); 
}); 
    })->get(); 
}); 
+0

看看這個問題[laravel - 爲什麼函數調用沒有括號(https://stackoverflow.com/questions/26512186/laravel-why-function-call-with-no -括號) – ljubadr

回答

1

工作在你的視圖文件,你應該調用的建築物()函數,以便返回一個關係實例(即返回關係對象)

變化

@foreach (Auth::user()->buildings as $b) 
    {{$b->name}} 
       @endforeach 

@foreach (Auth::user()->buildings() as $b) 
    {{$b->name}} 
       @endforeach