Eloquent Laravel 中的查询速度太慢
Eloquent query so slow in Laravel
我正在 Laravel 5.3.19 中做一个应用程序,问题是,我正在用 Eloquent 做一个查询但是它太慢了,我读了一些论坛并且看起来我是做错了什么,我尝试在控制台中使用命令 php artisan tinker
执行此查询并且查询工作正常,问题是当我登录到我在 routes/web.php
中创建的 URL 时我的浏览器,页面只是无限期地加载,有时它会给我一个超时错误。有人知道可能是什么问题吗?
这是我的文件:
- routes/web.php
Route::get('/area_products/listProductsByArea/{area}','AreaProductController@orderProductsListByArea');
- Http/controllers/AreaProductController.php(控制器)
public function orderProductsListByArea($area){
$array_products = [];
$products = AreaProduct::where('area_id', $area)->get();
foreach ($products as $data) {
$product = [
'id' => $data->id,
'price' => $data->price,
'product_id' => $data->product->id,
'product_name' => $data->product->name,
'product_category' => $data->product->category->name,
'product_reference' => $data->product->reference,
'product_code' => $data->product->code,
'area_id' => $data->area_id
];
array_push($array_products, $product);
}
}
- Http/AreaProduct.php(型号)
namespace App;
use Illuminate\Database\Eloquent\Model;
class AreaProduct extends Model{
public $table = "products_area";
public function product(){
return $this->belongsTo('App\Product');
}
public function area(){
return $this->belongsTo('App\Area');
}
}
注意:此查询应该 return 接近 700 个结果,我注意到问题是在我处理诸如 'product_name' => $data->product->name
之类的关系时产生的。难道我做错了什么?
感谢您的帮助。
既然你正在使用 Eloquent 关系,你不能这样做:
public function orderProductsListByArea($area){
// Load the Area products with the 'product' relationship (eager loading)
$products = AreaProduct::where('area_id', $area)
->with('product')
->get();
// Return the list of products
return $products;
}
没有看到您 data/db 的其余部分,我很确定 return 应该是您想要的。
我正在 Laravel 5.3.19 中做一个应用程序,问题是,我正在用 Eloquent 做一个查询但是它太慢了,我读了一些论坛并且看起来我是做错了什么,我尝试在控制台中使用命令 php artisan tinker
执行此查询并且查询工作正常,问题是当我登录到我在 routes/web.php
中创建的 URL 时我的浏览器,页面只是无限期地加载,有时它会给我一个超时错误。有人知道可能是什么问题吗?
这是我的文件:
- routes/web.php
Route::get('/area_products/listProductsByArea/{area}','AreaProductController@orderProductsListByArea');
- Http/controllers/AreaProductController.php(控制器)
public function orderProductsListByArea($area){
$array_products = [];
$products = AreaProduct::where('area_id', $area)->get();
foreach ($products as $data) {
$product = [
'id' => $data->id,
'price' => $data->price,
'product_id' => $data->product->id,
'product_name' => $data->product->name,
'product_category' => $data->product->category->name,
'product_reference' => $data->product->reference,
'product_code' => $data->product->code,
'area_id' => $data->area_id
];
array_push($array_products, $product);
}
}
- Http/AreaProduct.php(型号)
namespace App;
use Illuminate\Database\Eloquent\Model;
class AreaProduct extends Model{
public $table = "products_area";
public function product(){
return $this->belongsTo('App\Product');
}
public function area(){
return $this->belongsTo('App\Area');
}
}
注意:此查询应该 return 接近 700 个结果,我注意到问题是在我处理诸如 'product_name' => $data->product->name
之类的关系时产生的。难道我做错了什么?
感谢您的帮助。
既然你正在使用 Eloquent 关系,你不能这样做:
public function orderProductsListByArea($area){
// Load the Area products with the 'product' relationship (eager loading)
$products = AreaProduct::where('area_id', $area)
->with('product')
->get();
// Return the list of products
return $products;
}
没有看到您 data/db 的其余部分,我很确定 return 应该是您想要的。