Привет, есть вот у меня foreach в приложении laravel, точнее foreach в foreach.
Все что происходит, проверяется наличие товара по прайсу в базе. Из за этого, медленно очень загружается страница.
view:
@foreach ($parts as $part)
<?php $aval = 0; ?>
@foreach ($prices as $k=>$v)
<?php
// Поиск наличия
$coem = str_replace(' ', '', $part->part_number);
$poem = str_replace(' ', '', $v->oem);
$coem = str_replace('-', '', $coem);
$poem = str_replace('-', '', $poem);
$coem = str_replace('-', '.', $coem);
$poem = str_replace('-', '.', $poem);
$coem = str_replace('(', '.', $coem);
$poem = str_replace('(', '.', $poem);
$coem = str_replace(')', '.', $coem);
$poem = str_replace(')', '.', $poem);
$sim = similar_text($coem, $poem, $perc);
if ($perc==100) {
if ($v->count >= 1) {
$aval = 1;
break;
}
}
?>
@endforeach
Вот контроллер:
// Получаем характеристики продукта
$attributes = DB::table('article_attributes')
->where('datasupplierarticlenumber', '=', $request->part_number)
->where('supplierid', '=', $supplier->id)
->get();
// Название изделия (есть еще статус изделия и не только см. таблицу articles)
$article = DB::table('articles')
->select('NormalizedDescription', 'ArticleStateDisplayValue')
->where('DataSupplierArticleNumber', '=', $request->part_number)
->where('supplierid', '=', $supplier->id)
->first();
// Файлы продукта
$files = DB::table('article_images')
->select('Description', 'PictureName')
->where('DataSupplierArticleNumber', '=', $request->part_number)
->where('supplierId', '=', $supplier->id)
->get();
// Применимость изделия
$result = [];
$rows = DB::table('article_li')
->select('linkageTypeId', 'linkageId')
->where('DataSupplierArticleNumber', '=', $request->part_number)
->where('supplierId', '=', $supplier->id)
->get();
// разбор
foreach ($rows as &$row) {
$result[]= DB::select("SELECT DISTINCT p.id, mm.description make, m.description model, p.constructioninterval, p.description FROM passanger_cars p
JOIN models m ON m.id=p.modelid
JOIN manufacturers mm ON mm.id=m.manufacturerid
WHERE p.id=" . $row->linkageId);
}
// Массив с информацией о товаре
$info = array(
"part_number" => $request->part_number, // OEM номер
"supplier_name" => $request->supplier_name, // Имя производителя
"supplier_id" => $supplier->id, // ID производителя
);
// Выгружаем прайсы
$prices = DB::table('prices')
->select('oem', 'price', 'count', 'stock')
->get();