Je suis un noob total de CodeIgniter. J'essaie de mettre à jour quelques éléments de la base de données à partir d'une boucle foreach.
foreach($transfer_lists as $lists) {
$this->db->from('tasks');
$this->db->where('task_list_id', $lists['list_id']);
$transfer_lists_check=$this->db->get()->result_array();
$transfer_new = array_shift($transfer_lists_check);
$new_array = array(
'task_id' => $transfer_new['task_id'],
'task_project_id' => $new_project_id
);
}
$this->db->update_batch('tasks', $new_array, 'task_list_id');
Mon tableau nouvellement créé ne renvoie qu'un seul élément du tableau. Il devrait renvoyer 3 éléments, car c'est le nombre d'éléments que contient la base de données avec cet identifiant de liste spécifique.
Comme vous pouvez le voir dans le code, j'essaie de mettre à jour par lots des tâches spécifiques avec un $project_id prédéfini, c'est pourquoi j'ai besoin d'un tableau.
Je me tape la tête contre le mur en essayant de trouver une solution, mais je n'ai pas encore trouvé quelque chose de similaire dans Stack, ou simplement je ne sais pas comment chercher :/
MISE À JOUR
Après avoir conversé avec @akshay-hedge ci-dessous, je me suis rendu compte que j'essayais d'obtenir 3 résultats dans une boucle 'foreach' avec 1 référence.
Solution : Inclure un autre "foreach" dans un "foreach" pour construire mon tableau selon les besoins.
Code mis à jour ci-dessous :
foreach($transfer_lists as $lists) {
$this->db->from('tasks');
$this->db->where('task_list_id', $lists['list_id']);
$tasks_found=$this->db->get()->result_array();
// Solution to get the desired Array I was looking for
foreach($tasks_found as $tasks) {
$new_array[] = array(
'task_id' => $tasks['task_id'],
'task_project_id' => $new_project_id
);
}
}
$this->db->update_batch('tasks', $new_array, 'task_list_id');
MISE À JOUR 2
Après quelques échanges, @akshay-hedge a suggéré une autre solution sans utiliser de 'foreach', en construisant un tableau à partir de 'task_list_id', que j'ai initialement.
Veuillez consulter la réponse acceptée ci-dessous pour obtenir la solution.