Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 函数内的Laravel错误极限_Php_Laravel_Laravel 5 - Fatal编程技术网

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第三方包