我有一个Laravel用户的存储库我正在使用但是为了防止总是唠叨N + 1问题我试图让我的所有用户以他们在用户中的角色和状态返回&# 39; s数组。
正如你现在可以看到它的运行方式,我的运行次数是200次,因为我的数据库中有任何记录。所以我试图减少它。
我将如何做到这一点?
<?php namespace Backstage\Repositories\Users;
use User;
use Backstage\Repositories\DbRepository;
class DbUserRepository extends DbRepository implements UserRepositoryInterface {
protected $model;
function __construct(User $model)
{
$this->model = $model;
}
}
视图/用户/分音/ table.blade.php
<td>{{ $user->id }}</td>
<td>{{ $user->full_name }}</td>
<td>{{ $user->email_address }}</td>
<td>{{ $user->role->name }}</td>
<td>{{ $user->status->name }}</td>
答案 0 :(得分:1)
您可以使用预先加载来摆脱N + 1问题,请参阅docs
你没有包含你的模型所以不是100%确定命名,但我认为你需要这个:
function __construct(User $model)
{
$this->model = $model;
$this->model->load('roles');
}
然而,这总是急于加载DbUserRepository的角色。 您也可以使用正确的方法调用 - &gt;加载(&#39;角色&#39;)。