/ / laravel 5.3 querybuilder db insert usando iteração de array como coluna - php, arrays, laravel-5.3

laravel 5.3 querybuilder db insert usando iteração de array como coluna - php, arrays, laravel-5.3

Eu sou novo no Laravel e um amador na melhor das hipóteses com PHP, mas tentando aprender. Esta é a minha primeira pergunta como eu geralmente consegui encontrar uma resposta procurando.

Isso é provavelmente algo simples que estou negligenciando. Estou enviando um formulário que pode ter até duas linhas de uma visualização para um controlador. Estou criando uma matriz a partir dos dados, como no meu controlador:

    foreach($candidates_member_id as $key => $value)
{
$arrData[] = array(
"member_user_id"        => $member_user_id[$key],
"candidates_member_id"  => $candidates_member_id[$key],
"candidates_district"   => $candidates_district[$key],
"candidate_name"        => $candidate_name[$key],
"created_at"            => $created_at[$key],
"updated_at"            => $updated_at[$key]
);
}

Se eu print_r ($ arrData) na vista associada, obtenho resultados como tal:

Array
(
[0] => Array
(
[member_user_id] => 1
[candidates_member_id] => 12345
[candidates_district] => 6
[candidate_name] => Doe, John
[created_at] => 2016-09-03 15:07:14
[updated_at] => 2016-09-03 15:07:14
)

[1] => Array
(
[member_user_id] => 1
[candidates_member_id] => 54321
[candidates_district] => 6
[candidate_name] => Doe, Jane
[created_at] => 2016-09-03 15:07:15
[updated_at] => 2016-09-03 15:07:15
)
)

No entanto, quando eu adiciono a inserção de DB no loop foreach acima:

DB::table("primary_votes")->insert(
["member_user_id" => $member_user_id,
"candidates_member_id" => $candidates_member_id,
"candidates_district" => $candidates_district,
"created_at" => $created_at,
"updated_at" => $updated_at]
);

Estou tendo o erro a seguir:

SQLSTATE [42S22]: Coluna não encontrada: 1054 Coluna desconhecida "0" na "lista de campos" (SQL: insert into primary_votes (0, 1) valores (1, 1), (12345, 54321), (6, 6), (2016-09-03 15:07:14, 2016-09-03 15:07:15), (2016-09-03 15:07:14, 2016-09-03 15:07:15)) na linha Connection.php 761 em Connection-> runQueryCallback ("inserir em primary_votes (0, 1) valores (?,?), (?,?), (?,?), (?,?), (?,?) ", array (" 1 "," 1 "," 12345 "," 54321 "," 6 "," 6 "," 2016-09-03 15:07:14 "," 2016-09-03 15: 07:15 "," 2016-09-03 15:07:14 "," 2016-09-03 15:07:15 "), objeto (Encerramento)) na linha Connection.php 717 em Connection-> run ("insert into primary_votes (0, 1) valores (?,?), (?,?), (?,?), (?,?), (?,?) ", array (" 1 "," 1 "," 12345 "," 54321 "," 6 "," 6 "," 2016-09-03 15:07:14 "," 2016-09-03 15: 07:15 "," 2016-09-03 15:07:14 "," 2016-09-03 15:07:15 "), objeto (Encerramento)) na linha Connection.php 481 no Connection-> instrução ("inserir em primary_votes (0, 1) valores (?,?), (?,?), (?,?), (?,?), (?,?) ", array (" 1 "," 1 "," 12345 "," 54321 "," 6 "," 6 "," 2016-09-03 15:07:14 "," 2016-09-03 15: 07:15 "," 2016-09-03 15:07:14 "," 2016-09-03 15:07:15 ")) na linha Connection.php 435 em Connection-> insert ("insert into primary_votes (0, 1) valores (?,?), (?,?), (?,?), (?,?), (?,?) ", array (" 1 "," 1 "," 12345 "," 54321 "," 6 "," 6 "," 2016-09-03 15:07:14 "," 2016-09-03 15: 07:15 "," 2016-09-03 15:07:14 "," 2016-09-03 15:07:15 ")) na linha Builder.php 2117 em Builder-> insert (matriz ("member_user_id" => array ("1", "1"), "candidates_member_id" => array ("12345", "54321"), "candidates_district" => array ("6" , "6"), "created_at" => array ("2016-09-03 15:07:14", "2016-09-03 15:07:15"), "updated_at" => array ("2016- 09-03 15:07:14 "," 2016-09-03 15:07:15 "))) em VoteSubmitController.php linha 60

Então, por algum motivo eu não consigo descobrir, ele está tentando usar a matriz "linha" chave como um nome de coluna.Por que é interpretar a chave de linha individual como uma coluna no banco de dados? Agradecemos antecipadamente.

Respostas:

2 para resposta № 1

Seu código deve se parecer com:

foreach($candidates_member_id as $key => $value)
{
$arrData = array(
"member_user_id"        => $member_user_id[$key],
"candidates_member_id"  => $candidates_member_id[$key],
"candidates_district"   => $candidates_district[$key],
"candidate_name"        => $candidate_name[$key],
"created_at"            => $created_at[$key],
"updated_at"            => $updated_at[$key]
);
DB::table("primary_votes")->insert($arrData);
}

A razão para o erro do mysql é que $ member_user_id, $ candidates_member_id são matrizes e não valores escalares. Você não pode inserir array no mysql.