/ / laravel 5.3 insert de base de données querybuilder utilisant l'itération du tableau comme colonne - php, tableaux, laravel-5.3

laravel 5.3 querybuilder db insère en utilisant l'itération du tableau comme colonne - php, tableaux, laravel-5.3

Je suis nouveau à Laravel et je suis au mieux un amateur avec PHP, mais j'essaie d'apprendre. C’est ma première question, car j’ai généralement réussi à trouver une réponse à ma question.

C’est probablement quelque chose de simple que je «néglige». Je soumets un formulaire pouvant contenir jusqu’à 2 lignes d’une vue à un contrôleur. Je crée un tableau à partir des données, comme dans mon contrôleur:

    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]
);
}

Si je print_r ($ arrData) sur la vue associée, j'obtiens les résultats suivants:

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
)
)

Cependant, lorsque j'ajoute DB, insérez-le dans la boucle foreach ci-dessus:

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]
);

Je reçois l'erreur suivante:

SQLSTATE [42S22]: Colonne introuvable: 1054 Colonne inconnue "0" dans "liste de champs" (SQL: insérer dans primary_votes (0, 1) valeurs (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)) dans la ligne Connection.php 761 at Connection-> runQueryCallback ("insérer dans primary_votes (0, 1) valeurs (?, ?), (?, ?), (?, ?), (?, ?), (?, ?) ", tableau (" 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 "), objet (Closure)) dans Connection.php, ligne 717 at Connection-> run ("insérer dans primary_votes (0, 1) valeurs (?, ?), (?, ?), (?, ?), (?, ?), (?, ?) ", tableau (" 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 "), objet (Closure)) dans Connection.php, ligne 481 at Connection-> statement ("insérer dans primary_votes (0, 1) valeurs (?, ?), (?, ?), (?, ?), (?, ?), (?, ?) ", tableau (" 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 ") dans Connection.php ligne 435 at Connection-> insert ("insérer dans primary_votes (0, 1) valeurs (?, ?), (?, ?), (?, ?), (?, ?), (?, ?) ", tableau (" 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 ") dans Builder.php, ligne 2117 at Builder-> insert (array ("member_user_id" => array ("1", "1"), "candidats_member_id" => array ("12345", "54321"), "candidats_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 ")) dans VoteSubmitController.php, ligne 60

Donc, pour une raison quelconque, je ne peux pas comprendre, il essaie d’utiliser la clé "row" du tableau comme nom de colonne. Pourquoi interprète-t-elle la clé de ligne individuelle comme une colonne dans la base de données? Merci d’avance.

Réponses:

2 pour la réponse № 1

Votre code devrait ressembler à:

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);
}

La raison de l'erreur mysql est que $ member_user_id, $ candidats_member_id sont des tableaux et non des valeurs scalaires. Vous ne pouvez pas insérer de tableau dans mysql.