[英]laravel Auth::user()->with return all not just authenticated user
錯誤:這將所有用戶與其人員一起返回:
$me = Auth::user()->with('persons')->get();
正確:這只返回經過身份驗證的用戶和他的人員
Auth::user()->persons()->get()
模型
public function persons(){
return $this->hasMany('App\Person', 'user_id');
}
區別在哪里? 為什么第一行返回所有用戶?
謝謝
with
應該在被稱為Builder
一個模型實例對象非。
在第一個示例中,您在User
實例上調用它,就像調用:
User::with('persons')->get();
所以Laravel會將所有用戶及其人員一起返回
請注意,如果要在單個模型上加載關系,可以執行以下操作:
$me = Auth::user();
$me->load('persons');
在查詢構建器中使用->with()
是急切加載關系,以便加載相關模型。 它不返回相關模型,只加載它們。
這里要注意的一件有趣的事情是auth() - > user(),返回User
模型實例。 因此,當使用->with('persons')->get()
您實際上是在創建一個新的Query Builder。
$user = auth()->user();
// The following line creates new Query for User model
$allUsersWithPersons = $user->with('persons')->get();
// same as following line
$allUsersWithPersons2 = User::with('persons')->get();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.