簡體   English   中英

laravel Auth :: user() - >返回所有不僅僅是經過身份驗證的用戶

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM