查询数据库的存储库和更好的数组使用情况

时间:2015-02-04 22:28:33

标签: php laravel

我有一个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>

1 个答案:

答案 0 :(得分:1)

您可以使用预先加载来摆脱N + 1问题,请参阅docs

你没有包含你的模型所以不是100%确定命名,但我认为你需要这个:

function __construct(User $model)
{
    $this->model = $model;
    $this->model->load('roles');
}

然而,这总是急于加载DbUserRepository的角色。 您也可以使用正确的方法调用 - &gt;加载(&#39;角色&#39;)。