Как использовать foreach l oop в sql запросах в laravel - PullRequest
0 голосов
/ 29 марта 2020

Я не знаю, нет. столбцов в таблице. Я могу получить список столбцов из запроса, как этот

$data = DB::getSchemaBuilder()->getColumnListing(table);

Теперь я хочу вставить значения в эту таблицу из запросов формы. Я сохранил их значения в объектных значениях.

foreach($data as $key => $data){ 
            $value = $_GET["$data"];}

и затем использовал следующий sql запрос

DB::insert("INSERT INTO `$table` foreach ($data as $data){ (`$data`) } VALUES foreach ($value as $value){ ('$value') }");

Пожалуйста, исправьте запрос sql, написанный здесь

Ответы [ 2 ]

0 голосов
/ 29 марта 2020

Вы не можете делать то, что хотите на уровне sql, вам нужно будет создать массив ключей / значений из того, что вы хотите вставить.

$insertValues = [];
foreach($data as $key => $columnName){ 
  $inserValues[$key] = $_GET[$columnName];
}

DB::table($table)
   ->insert($insertValues);

Вам также следует пересмотреть свой использование $ _GET. Laravel позволяет легко вводить объект запроса в контроллер и извлекать из него размещенные / помещенные данные. https://laravel.com/docs/master/requests

например, $request->input($columnName); вместо $_GET[$columnName]

Надеюсь, это поможет!

0 голосов
/ 29 марта 2020

в laravel вы можете использовать table функцию DB:

DB::table('users')->insert(
    ['email' => 'john@example.com', 'votes' => 0]
);

для вашего кода:

DB::table($table)->insert($data);

Laravel -Database: Конструктор запросов / Вставки

...