#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();