我正在使用 Laravel Backpack 为网站构建后端面板。这真的很好,但我注意到关系查询非常昂贵。
我有两个模型:Product和Center,它们之间存在多对多关系。在我的 CenterCrudController 中,我以这种方式定义了一个字段:
$this->crud->addColumns([
// More fields...
[
'label' => 'Products',
'type' => 'select2_multiple',
'name' => 'products', // the method that defines the relationship in your Model
'entity' => 'products', // the method that defines the relationship in your Model
'attribute' => 'name', // foreign key attribute that is shown to user
'model' => 'App\Models\Product', // foreign key model
'pivot' => true, // on create&update, do you need to add/delete pivot table entries?
],
// More fields...
]);
它工作正常,显示带有相关模型的选择多个字段。但是使用的查询是SELECT * FROM products
,这是非常昂贵的(表产品有数千条记录,大约 25 列)。
在这个例子中,我只需要id和name字段。我正在寻找类似 Query Builderselect()
方法的东西。
有没有办法优化这种类型的查询?
提前致谢!