eager-loading 相关问题

预先加载是一种在同一请求中加载某个类的对象和多个命名关联的方法。

拉拉维尔变形儿童关系渴望加载

我们有一些与此相关的表: 任务是我们的主表(有两列与下一个表有变体关系:modality_type和modality_id) 然后,我们有各种桌子,其中包含元

回答 2 投票 0



急切地加载主动记录关联时避免双重查询?

为了进行单个数据库查询,我渴望加载帖子及其翻译数据(使用Rails 6和Mobility(*)),但它产生了2个SQL查询: #App/models/post.rb 班级职位...

回答 2 投票 0

抛弃缓存和急切的加载:如何获得两全其美?

在我看来,碎片缓存和急切的负载至少有时会彼此有些不一致。假设我有一个用户有很多帖子,每个帖子都有许多评论,反过来也可以发表很多评论。

回答 3 投票 0


Laravel - 渴望加载多态关系的相关模型

我可以立即加载多态关系/模型,而不会出现任何 n+1 问题。但是,如果我尝试访问与多态模型相关的模型,则会出现 n+1 问题,并且我似乎无法找到解决方案。哈...

回答 6 投票 0

Laravel Eloquent:从子查询创建自定义属性

模态:Subscription.php 类订阅扩展模型{ 使用 HasFactory; 公共函数 payment(): HasMany { 返回 $this->hasMany(SubscriptionPayment::class, 'sub_id'); }

回答 1 投票 0

Laravel - 自定义中间表模型 - 急切加载

这是我当前的设置: 这是我当前的设置: <?php namespace App\Models; use Exception; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class Employee extends Model { protected $table = 'employees'; protected $fillable = [ 'first_name', 'last_name', 'gender', 'birthdate', 'nationality_id', 'company_id', ]; public function positions(): BelongsToMany { return $this->belongsToMany(Position::class) ->using(EmployeePosition::class); } } <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class Position extends Model { protected $table = 'positions'; protected $fillable = [ 'name', ]; public function employees(): BelongsToMany { return $this->belongsToMany(Employee::class) ->using(EmployeePosition::class); } } 它们通过数据透视表相互连接,根据文档将其配置为“自定义中间表模型”。 我设置了以下列: | id | employee_id | position_id | <?php namespace App\Models; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasManyThrough; use Illuminate\Database\Eloquent\Relations\Pivot; class EmployeePosition extends Pivot { /** * Indicates if the IDs are auto-incrementing. * * @var bool */ public $incrementing = true; protected $table = 'employee_position'; } 有了$employee,到目前为止一切正常: $employee->load('positions') 接下来,我还创建了一个employee_position_technologies表: <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class EmployeePositionTechnology extends Model { protected $table = 'employee_position_technologies'; protected $fillable = [ 'employee_position_id', 'technology_id', ]; } 我想给“员工职位”分配很多“技术”。 我也做到了。 现在,我想要实现的是将技术相应地加载到员工职位上: $employee->load('positions.technologies') 为此,我修改了 EmployeePosition 类,添加了 technologies() 方法,如下所示: public function technologies() { return $this->hasManyThrough( Technology::class, EmployeePositionTechnology::class, 'employee_position_id', 'id', 'position_id', 'technology_id' ); } 这不起作用,因为 technologies() 方法似乎是从 Position 模型。 我发现要访问“中间表模型”,我们必须使用以下命令: $employee->position->pivot->technologies 所以我尝试了: $employee->load('positions.pivot.technologies'); 这似乎也不起作用,有错误 Call to undefined relationship [pivot] on model [App\Models\Position]. 接下来,虽然我不喜欢,但我尝试了: $employee->load('positions'); $employee->positions->each(function ($position) { $position->pivot->load('technologies'); }); 这似乎有效,我可以访问该方法,但 technologies 的结果 position 关系为空。 我尝试转储查询,它似乎是正确的: select * from "technologies" inner join "employee_position_technologies" on "employee_position_technologies"."technology_id" = "technologies"."id" where "employee_position_technologies"."employee_position_id" = ? 我错过了什么? 您是否尝试过使用 with() 方法代替 load() 方法来急切加载您要加载的关系?您可以使用 with 关键字来实现此目的,如下所示,其中关系作为参数传递给 with 方法 $employee->positions()->with('technologies')->get(); 这将返回为该员工找到的所有职位以及每个职位的相关技术(如果有)。您可以从 Laravel 官方网站阅读更多有关使用 with 方法进行预加载的信息

回答 1 投票 0

在 Laravel 中访问关系内部的模型属性在急切加载时返回 null

在 Laravel 中的关系逻辑中访问模型属性时,急切加载时属性全部为空,如果延迟加载则工作正常。 型号关系: 公共职能组织() {

回答 1 投票 0

Nhibernate - 分页和预加载实体

我有两个实体,一个团队和一个员工。 我想要一份拥有热切的团队的员工名单。该列表必须分页。 公共 PagedList GetAllEmployeesWithEagerLoadedTeams...

回答 1 投票 0

如何在 Laravel 中使用更改的列值建立关系

这是我在 StackOverflow 上的第一个问题。我来这里是因为我试图在 Laravel 中建立一种特殊的关系。我希望能够做出这样的东西 公共函数游戏() {...

回答 1 投票 0

使用 Entity Framework Core 的最小 API - 由于数据库中的图像而导致性能不佳

我正在使用 Entity Framework Core 为 ASP.NET Core v8 Minimal API 编写 API。端点之一应该获取特定项目组中的所有项目。这些项目位于两个表中...

回答 1 投票 0

嵌套关系和自定义访问器的预加载会导致性能问题

我正在使用 Laravel 10 开发一个应用程序,并且面临与急切加载嵌套关系和自定义访问器相关的性能问题。 设想: 我有三个模型:User、Post 和

回答 1 投票 0

withQueryString() 不适用于急切加载和分页

我正在尝试对 $users 使用 withQueryString() $users = $usersQuery->分页(10); 像这样 $users = $usersQuery->paginate(10)->withQueryString(); 但我收到错误“未定义的方法

回答 1 投票 0

Laravel 关系无法通过属性的方法加载

我有3张桌子的合同、细节和额外的。 每个合约都有一个详细信息,其中的外键名为contractId,位于详细信息表中。 每个细节都有 5 列,来自名为 Color 的额外表,... 我

回答 1 投票 0

如何在 EF Core 预加载中包含每个层次结构的表属性

考虑以下模型类: 公共抽象类A { 公共枚举 T { B_, C_, D_ } 公共 int Id { 得到;放; } 公共整数?父级 ID { 获取;放; } 公共A?父级 { 得到; ...

回答 1 投票 0

通过多个选择进行急切获取,但没有 FetchType.EAGER 注释

我想在某些用例中急切地获取一对多列表(但并非总是如此,所以 @OneToMany(fetch=FetchType.EAGER) 不会很好),并且我也希望 JPA 使用单独的SQL 选择获取那些 Lis...

回答 2 投票 0

如何将 eager_load 和 select 一起使用?

我试图使用 eager_load 仅选择某些列,但我面临着它取消我的“选择”的问题。 模型: 课程时间表 < ActiveRecord::Base belongs_to :timeline_category,

回答 3 投票 0

eager_load=true有什么影响?

我需要知道为什么在非生产环境中 eager_load 首选为 false?我听说过的一个论点是 eager_load eager 加载了我体内的大部分 Rails 和应用程序......

回答 2 投票 0

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.