Laravel,获取单个记录的关系(with() 上的 $first)

Leo*_*eon 2 php mysql laravel eloquent

我想将一些相关的模型数据添加到我的 $user 对象中。让我解释 :

$user = User::find(1); // my user object 
// I want to add my defined user profile from the user_profile relationship
$userdata = $user->with('user_profile')->first();
Run Code Online (Sandbox Code Playgroud)

这不起作用:(它返回我数据库中第一个用户的用户配置文件!

$user = User::find(1); // my user object 
// I want to add my defined user profile from the user_profile relationship
$userdata = $user->with('user_profile')->get();
Run Code Online (Sandbox Code Playgroud)

这也不是我需要的 - 在这种情况下,用户始终是单个记录,而不是集合。

那么如何获取 $user 的相关“with”数据,并将其存储在 $userdata 中呢?

谢谢。

Adn*_*taz 6

您正在尝试获取user_profile与预加载相关联的所有用户的数据。

User::with('user_profile')->get();
Run Code Online (Sandbox Code Playgroud)

如果您想获取单个用户的数据,您可以尝试。

User::with('user_profile')->where('id',$user_id)->first();
Run Code Online (Sandbox Code Playgroud)

usingwith('relations')将返回所有用户和与他们相关的数据。

您现在可以从对象本身访问它们:

$user = User::with('user_profile')->where('id',$user_id)->first();
$userProfile = $user->user_profile;
Run Code Online (Sandbox Code Playgroud)

如果$user已经获取并且您想要获取关联的关系。

然后你可以

$user->load('user_profile');
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助