Laravel красноречив с категориямиPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Laravel красноречив с категориями

Сообщение Anonymous »

У меня вопрос по поводу eloquent в laravel.

Таблицы БД


категории: идентификатор root_id, имя

идентификатор продукта, имя и т. д.

product_categories id product_id Category_id


Таким образом, это может быть Категория A, у которой есть дочерняя Категория B, а у Категории B сама по себе есть дочерняя Категория C.

Когда я нажимаю «Категорию А», я хочу найти все продукты, входящие в категории «А», «Категория Б», «Категория В».

Код: Выделить всё

Category Model

public function cats()
{
return $this->hasMany(Category::class);
}

public function childrenCategories()
{
return $this->hasMany(Category::class)->with('cats');
}
Модель продукта

Код: Выделить всё

public function categories()
{
return $this->belongsToMany(Category::class);
}
Контроллер

//Сначала я получаю все идентификаторы всех категорий, подкатегорий всех уровней.

Код: Выделить всё

        $categories = Category::where('category_id',$category_id)->with('childrenCategories')->get();
$all_cat_array=array();$all_prod=array();

foreach ($categories as $category)
{
foreach ($category->childrenCategories as $childCategory) {
array_push($all_cat_array, $childCategory->id);
}
array_push($all_cat_array,$category->id);

}
//затем я получаю все идентификаторы продуктов

Код: Выделить всё

foreach ($all_cat_array as $cat)
{
if(CategoryProduct::where('category_id',$cat)->exists()) {
$prod=CategoryProduct::where('category_id',$cat)->pluck('product_id');
array_push($all_prod,$prod );
}
}
Но я не хочу использовать все эти foreach, так как хочу оптимизировать код.
Что я могу сделать, чтобы сделать его проще?? ?

Подробнее здесь: https://stackoverflow.com/questions/579 ... categories
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»