Dynami c Создать $ input в Laravel Контроллер для вставки данных в таблицу (ошибка из-за неработоспособности Foreach l oop) - PullRequest
0 голосов
/ 21 апреля 2020

Уважаемый господин / мэм, у меня другой продукт, и я хочу создать динамический c $ вход в контроллер для сохранения информации о продукте в базу данных


Пример

    $imput['name'] = $request->get('name');
    $imput['price'] = $request->get('price');
    $imput['description'] = $request->get('description');

Для динамического создания вышеуказанного ввода в контроллере я пытаюсь использовать foreach l oop и передавать ключ ввода и значение со стороны внешнего интерфейса


Пример

    [["name", "biryani"], ["size", "full"], ["price", "200"], ["description", "chicken + rice"], ["url", 
    …],…]
    0: ["name", "biryani"]
    1: ["size", "full"]
    2: ["price", "200"]
    3: ["description", "chicken + rice"]
    4: ["url",…]
    5: ["modelName", "chickenBiryani"]

Код, который я пишу в контроллере

(где я ошибаюсь, этот код не работает, и, пожалуйста, дайте ответ, который я упоминаю в комментариях к коду, спасибо)

  public function upload($productInfo)
    {
     $input=[];
        foreach ($productInfo as $data) {
             // return $productInfo -- this return data
            // return $data -- this return throw error , why this happen
            foreach ($data as $val) {
            // return $val -- this return data
                if ($val[0] == 'modelName') {
                    $modelName = '\\App\\' . $val[1];
                } else {
                    $input[$val[0]] = $val[1];
                }
            }
        }
        $model = new $modelName;
        $model::create($input);
        return response()->json(['msg' => 'Profile Image Upload Succeessfully']);
    }

Пожалуйста, помогите мне, сэр, я новичок в Laravel

1 Ответ

0 голосов
/ 21 апреля 2020

В своем коде вы объявили $input = [], но с помощью $imput в l oop. Это означает, что $input всегда будет пустым массивом. Во-вторых, Model::create() принимает один ассоциативный массив, а не многомерный массив, например:

[
"name" => "Name",
"user_id" => 23
]

Наконец, вам может потребоваться вычеркнуть код, чтобы исключить этот двойной l oop. Но я не уверен, чего вы пытаетесь достичь, поэтому не могу предложить правки

...