Laravel资源-它如何工作?

时间:2020-08-09 07:37:23

标签: php laravel

当我创建一个api并使用laravel资源时,是获取完整数据然后选择要在资源文件中发送的列还是在从数据库中选择数据时确定应该选择哪些列? / p>

1)

return UserResource::collection(User::all());

// Resource file:
public function toArray($request)
    {
        return [
            'id' => $this->id,
            'name' => $this->name
        ];
    }
return UserResource::collection(User::all('id', 'name'));

// Resource file:
    public function toArray($request)
        {
            return parent::toArray($request);
        }

2 个答案:

答案 0 :(得分:1)

总是最好的做法是只加载相关数据,因为这样可以节省内存和时间。 在laravel中,您可以使用“选择”功能轻松地在查询中完成该操作 例如

return UserResource::collection(User::select('id', 'name')->get());

// Resource file:
    public function toArray($request)
        {
            return parent::toArray($request);
        }

https://laravel.com/docs/7.x/queries#selects

How to select specific columns in laravel eloquent

答案 1 :(得分:0)

如果数据库中有数百万条记录,我绝对建议您从表中获取特定的列。这是我使用36K条记录在表格上运行的一些统计信息

SELECT *  from `app_logs` // + 0.172 sec
SELECT ID FROM `app_logs`// + 0.016 sec

因此,即使只有几千条记录,差异也足够了。

但是,为简单起见,而不涉及性能,您也可以使用laravel花式语法。

User::all()

Check @Marc_S answer on why you should select only required columns