Laravel错误的函数内部极限



有三种型号UserPostImage。用户有很多帖子,帖子有很多图片。此外,还有一个user_images函数CCD_ 5函数。所有关系都很好。在搜索过程中,我想让用户获得图像(每个用户最多3张(,并做一些类似的事情:

$users = User::where('is_active', true)
->with([
'user_images' => function ($relation) {
$relation->limit(self::LIMIT_IMAGES);
}
])->get();

响应:

[
{
"id": 265,
"user_images": [
{
"id": 309,
"path": "url"
},
{
"id": 308,
"path": "url"
},
{
"id": 306,
"path": "url"
}
]
},
{
"id": 305,
"user_images": []
}
]

正如你所能,我只有3个图像适用于所有用户,而不是每个用户。但是,如果我使用相同限制的Lazy Eager Loading(函数加载(,一切都很好。有人能解释这种行为吗?

我建议使用雄辩的热切极限包

安装后:

composer require staudenmeir/eloquent-eager-limit:"^1.0"

你只需要在模型中使用它,你想使用有限的热切加载:

class User extends Authenticatable 
{
use StaudenmeirEloquentEagerLimitHasEagerLimit;
// ....
}

class UserImage extends Model
{
use StaudenmeirEloquentEagerLimitHasEagerLimit;
// ....
}

现在,您有限的热切加载将被正确提取。

最新更新