Laravel - 数据库查询约定/标准实践

时间:2014-09-09 16:01:27

标签: php mysql laravel

我注意到关于Laravel雄辩模型的一些事情是它似乎对关系运行一个单独的查询。假设您有一个包含4种不同关系的员工模型,部门,客户,商店和经理。

现在,假设您在表格中显示了视图中所有员工的列表:

@foreach($employees as $employee)
    <tr>
        <td> {{$employee->department->name}} </td>
        <td> {{$employee->client->name}} </td>
        <td> {{$employee->store->name}} </td>
        <td> {{$employee->manager->name}} </td>
    </tr>
@endforeach

每次$ em​​ployees-&gt; relationship-&gt;无论调用什么,它都会调用数据库。为什么?如果您正在显示100名员工,那么您将运行400个查询。

我的问题是:有什么好方法可以做到这一点?使用查询构建器并进行连接而不是使用Eloquent?使用CakePHP代替?哈哈。

1 个答案:

答案 0 :(得分:2)

正如@watcher所提到的,eager loading允许您指定在第一次查询时加载的链接表。因此,您的控制器将包含以下内容:

Employee::with('Department', 'Client', 'Store', 'Manager')->get();

这将选择员工及其属性。