PHP - Как изменить имя_категории и имя_категории в массиве объекта? - PullRequest
0 голосов
/ 08 марта 2019

Посмотрите мой существующий код:

class CategoryController extends ApiController
{
    public function getCategory(){
       $categories = DB::table('products')
        ->select('category', 'category_name')
        ->distinct('category', 'category_name')
        ->get();
        $newArr = [];
        foreach ($categories as $value) {
            $newArr[$value->category_name] = [];
            $subcategories = DB::table('products')
            ->select('subcategory_name')
            ->where('subcategory', 'LIKE', '%'. $value->category.'%')
            ->distinct('subcategory')
            ->get()->pluck('subcategory_name');
            array_push($newArr[$value->category_name], $subcategories);
        }
    return response()->json([
        'data' => $newArr
    ]);
    }

}

Ответ кажется:

 "data": {
        "Food": [
            [
                "Chicken",
                "Egg",
                "Pie"
            ]
        ],
        "Drinks": [
            [
                "Beer",
                "Juice",
                "Water"
            ]
        ],

Но это не тот ответ, который я хочу. Мне нужно как:

data: {
{
category_name : "Food",
subcategories_name : ["Chicken", "Eggs", "Pie"]
}
{
category_name : "Drinks",
subcategories_name : ["Beer", "Juice", "Water"]
}
}

, если вы не понимаете какую-то часть кода, спросите меня. У меня есть поля в таблице продуктов, такие как категория, имя категории, подкатегория, имя подкатегории. Категория кода и подкатегория, к которой она принадлежит, являются одним и тем же кодом. Все, что мне нужно, это написать ответ, как я написал выше. моя логика заключалась в том, чтобы поместить все категории в категории и в подкатегории, я настроил все подкатегории и затем объединил их в один массив. Мне не важно, как это будет выглядеть, важен только результат. Спасибо.

пс. Я не знаю, насколько важна моя база данных для вас, но есть таблица продуктов и 4 поля = категория, подкатегория, имя_категории, имя_категории. Это все.

1 Ответ

1 голос
/ 08 марта 2019

вам нужно вручную назначить ключи в вашем выходном массиве.

foreach ($categories as $value) {

        $subcategories = DB::table('products')
        ->select('subcategory_name')
        ->where('subcategory', 'LIKE', '%'. $value->category.'%')
        ->distinct('subcategory')
        ->get()->pluck('subcategory_name');

        $newArr[] = [
             'category_name' => $value->category_name;
             'subcategories_name' => subcategories;
         ];
    }

    $newArrValues = array_values($newArr);
    $output = json_encode($out);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...