繁体   English   中英

雄辩的口才在Laravel中如此缓慢

[英]Eloquent query so slow in Laravel

我正在Laravel 5.3.19中做一个应用程序,问题是,我正在用Eloquent进行查询,但是它太慢了,我读了一些论坛,好像我做错了什么,我尝试在使用命令php artisan tinker的控制台并且查询工作正常,问题是当我从浏览器登录到在routes/web.php创建的URL时,页面只是无限期加载,有时它给了我超时错误。 有人知道可能是什么问题吗?

这是我的文件:

  • 路线/ 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');
    }
}

注意:此查询应该返回接近700个结果,我注意到当我在执行诸如'product_name' => $data->product->name类的关系时,会产生此问题。 难道我做错了什么?

谢谢你的帮助。

由于您使用的是雄辩的关系,因此您不能这样做:

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;
}

在没有看到您的其余数据/数据库的情况下,我很确定应该返回您想要的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM