Красноречивый запрос в Laravel такой медленный

Я делаю приложение в Laravel 5.3.19, дело в том, что я делаю запрос с Eloquent, но он настолько медленный, я читаю некоторые форумы и мне кажется, что я делаю что-то не так, я пытался сделать этот запрос в консоль с командой php artisan tinker и запрос работает отлично, проблема заключается в том, когда я вхожу в URL, который я создал в routes/web.php из моего браузера страница просто загружается на неопределенный срок, и иногда она выдает ошибку тайм-аута. Кто-то знает в чем может быть проблема?

вот мои файлы:

  • маршруты / web.php
Route::get('/area_products/listProductsByArea/{area}','AreaProductController@orderProductsListByArea');
  • Http / controllers / AreaProductController.php (Controller)
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, Я делаю что-то неправильно?

Спасибо за вашу помощь.

0

Решение

Поскольку вы используете отношения 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;
}

Не видя остальных ваших данных / БД, я почти уверен, что должен вернуть то, что вы хотите.

1

Другие решения

Попробуй это:

  • Area.php (модель)

    // Assuming table products has foreign key from table areas
    
    public function product()
    {
    return $this->hasMany('App\Product');
    }
    
  • AreaProductController.php (Контроллер)

    $myarea = Area::find($id);
    $products_per_area = $myarea->product;
    
    return view('', compact('products_per_area'));
    
-1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector