LARAVEL: данные группы объединения слева

#php #mysql #sql #laravel

#php #mysql #sql #ларавель

Вопрос:

У меня есть две таблицы в моей базе данных: категория продукта и подкатегория. Я хочу перечислить все названия моих товарных категорий и названия подкатегорий с помощью левого соединения. мой запрос:

  $subcategory =DB::table('product_categories')->distinct('product_categories.categorie_name')
  ->select(array('product_categories.categorie_name','subcategory.sub_category_name'))
        ->leftJoin('subcategory', 'product_categories.product_category_id', '=', 'subcategory.product_category_id')
        ->get();
 

Данные были перечислены таким образом:

 [0]=>
object(stdClass)#288 (2) {
  ["categorie_name"]=>
  string(6) "Phones"
  ["sub_category_name"]=>
  string(5) "Nokia"
}
[1]=>
object(stdClass)#290 (2) {
  ["categorie_name"]=>
  string(6) "Phones"
  ["sub_category_name"]=>
  string(7) "Samsung"
}
 

Вы можете видеть, что категория ТЕЛЕФОНОВ имеет 2 подкатегории, Nokia и Samsung, но проблема в том, что данные находятся в другом ключе массива, возможно ли перечислить данные таким образом:
Телефоны:
-Nokia,
-Samsung
Итак, данные находятся в том же ключе массива, заранее спасибо!

Ответ №1:

Может быть, то, чего вы хотите, — это быстрая загрузка. Давайте использовать модели вместо таблиц базы данных.

 use IlluminateDatabaseEloquentModel;

class ProductCategory extends Model
{
    public function subCategories()
    {
        return $this->hasMany(SubCategory::class);
    }
}

class SubCategory extends Model
{
    ...
}

ProductCategory::with('subCategory:sub_category_name')
    ->select('category_name')
    ->get();