Php 函数内的Laravel错误极限
有三种型号Php 函数内的Laravel错误极限,php,laravel,laravel-5,Php,Laravel,Laravel 5,有三种型号UserPost和Image。 用户有很多帖子,帖子有很多图片。此外,还有一个user\u images功能,它是 hasManyThrough函数。所有关系都很好。 在搜索过程中,我希望获得具有图像的用户(每个用户最多3个),并执行类似操作: $users = User::where('is_active', true) ->with([ 'user_images' => function ($relation) {
User
Post
和Image
。
用户有很多帖子,帖子有很多图片。此外,还有一个user\u images
功能,它是
hasManyThrough
函数。所有关系都很好。
在搜索过程中,我希望获得具有图像的用户(每个用户最多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张图像,而不是每个用户。但是,如果我使用具有相同限制的惰性急切加载(函数加载),那么所有这些都可以很好地工作。
有人能解释一下这种行为吗?我建议使用软件包
安装后:
composer require staudenmeir/eloquent-eager-limit:"^1.0"
您只需在要使用有限的即时加载的模型中使用它:
class User extends Authenticatable
{
use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;
// ....
}
class UserImage extends Model
{
use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;
// ....
}
现在,将正确获取有限的即时加载。我建议使用软件包
安装后:
composer require staudenmeir/eloquent-eager-limit:"^1.0"
您只需在要使用有限的即时加载的模型中使用它:
class User extends Authenticatable
{
use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;
// ....
}
class UserImage extends Model
{
use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;
// ....
}
现在,您有限的即时加载将被正确获取。thx以获取建议,但仅用于限制选择对我来说似乎不太好。还想通过了解有关
的信息。这是本机行为还是一个bug?谢谢你的建议,但我似乎不适合只使用包进行限制选择。还想通过
了解有关的信息。这是本机行为还是bug?在Laravel中没有本机支持。您需要创建自定义方法或使用第三方软件包,如下面提到的@OMR。Laravel中没有对此的本机支持。您需要创建自定义方法或使用下面提到的@OMR第三方包