加载 hasMany 关系的最后一条记录

Anc*_*end 4 laravel eloquent laravel-6

我的控制器中有以下代码,我试图在其中加载所有“成员”。每个成员可以有多个电话号码。电话号码存储在一个名为的表中phone_numbers,并与用户 ID 相关联。下面,我正在尝试加载为每个成员存储的最后一个电话号码。注意,用户在手机上有 hasMany 关系。

用户名

public function phone()
{
    return $this->hasMany('App\Model\PhoneNumber');
}
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的:

$members = \App\Model\User::all();
$members->load('phone');
Run Code Online (Sandbox Code Playgroud)

我很感激有关如何实现这一目标的任何建议。

Tsa*_*oga 9

要获取最新行,您只需使用latest, 并使用如下hasOne关系:

public function phone()
{
    return $this->hasOne('App\Model\PhoneNumber')->latest();
}
Run Code Online (Sandbox Code Playgroud)

因此,您可以获得所有用户的最新手机:

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

  • 等等,这不行。注意,电话是 **hasMany** 关系。 (2认同)