Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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
Laravel 4 Laravel:快速加载复制_Laravel 4 - Fatal编程技术网

Laravel 4 Laravel:快速加载复制

Laravel 4 Laravel:快速加载复制,laravel-4,Laravel 4,我试图设置急加载以防止N+1查询,但我发现我必须复制一些急加载,以便让laravel使用“急加载”数据。当然,复制急切的负载会导致重复的查询 这是我的负载呼叫: $provider->load('ads.gallery.images', 'ads.thumbnail', 'ads.user', 'ads.provider.values.field', 'values.field', 'galleries.images'); 提供者是用户的多态子类型。这是针对用户配置文件页面的,该页面显示

我试图设置急加载以防止N+1查询,但我发现我必须复制一些急加载,以便让laravel使用“急加载”数据。当然,复制急切的负载会导致重复的查询

这是我的负载呼叫:

$provider->load('ads.gallery.images', 'ads.thumbnail', 'ads.user', 'ads.provider.values.field', 'values.field', 'galleries.images');
提供者是用户的多态子类型。这是针对用户配置文件页面的,该页面显示用户
列表,以及其所有广告的列表。广告显示是一个子视图,可在整个网站上重复使用,并有一个选项卡显示用户
列表。是的,这是多余的,但这就是网站的设计方式


我希望laravel在子视图访问时重用已加载的
values.field
列表,但它没有,因此我必须将
ads.provider.values.field
添加到列表中,这重复了查询:

select `provider_field_values`.*, `provider_values`.`user_id` as `pivot_user_id`, `provider_values`.`value_id` as `pivot_value_id` from `provider_field_values` inner join `provider_values` on `provider_field_values`.`id` = `provider_values`.`value_id` where `provider_values`.`user_id` in ('3')
select * from `provider_fields` where `provider_fields`.`id` in ('1', '2', '3')
select `provider_field_values`.*, `provider_values`.`user_id` as `pivot_user_id`, `provider_values`.`value_id` as `pivot_value_id` from `provider_field_values` inner join `provider_values` on `provider_field_values`.`id` = `provider_values`.`value_id` where `provider_values`.`user_id` in ('3')
select * from `provider_fields` where `provider_fields`.`id` in ('1', '2', '3')
我有没有办法消除这种重复?我不确定问题是视图如何访问数据,还是数据在控制器中。如果需要,我可以添加视图代码片段

编辑:模型关系:

//Provider model
public function values()
{
    return $this->belongsToMany('ProviderFieldValue', 'provider_values', 'user_id', 'value_id');
}

//ProviderField model
public function fieldValues()
{
    return $this->hasMany('ProviderFieldValue', 'field_id');
}

//ProviderFieldvalue model
public function field()
{
    return $this->belongsTo('ProviderField');
}

//ProviderValue model (this is a pivot table)
public function provider()
{
    return $this->belongsTo('Provider');
}

public function fieldValue()
{
    return $this->belongsTo('ProviderFieldValue');
}

您是否正确设置了模型关系?@HelderLucas哪些模型?我可以将它们添加到帖子中,这样您就可以验证查询中涉及的那些内容
ads.provider.values.field
您应该考虑反规范化。你们的关系层次很深。