2014-07-09 1 views
0

J'ai ma propre fonction save() pour enregistrer les données du formulaire Joomla dans la base de données. Voici comment cela ressembleINSÉRER plusieurs lignes en utilisant la fonction SAVE() - Joomla 2.5

Note: j'ai écrit mon propre sauvegarde() fonction parce que je dois enregistrer dans deux tables sur une économie d'une action

class footballModelPlayer extends JModelAdmin { 
enter code here 
    public function save($data) { 

    $table_two = $this->getTable('player_sec_positions', 'footballTable', array()); 

    $player_id = $data['player_id']; 

    $player_sec_positions_data = array(); 

    foreach ($data['sec_position_name'] as $pos_name) { 
     $player_sec_positions_data['player_id'] = $player_id; 

     $player_sec_positions_data['sec_position_name'] = $pos_name; 

     // var_dump($player_sec_positions_data); 
     $table_two->bind($player_sec_positions_data); 
     $table_two->save($player_sec_positions_data); 
    } 

    return $data->player_id; 
    } 
} 

Le problème est que je ne peux pas économiser plus une lignes, ce que seul ce code fait, il enregistre le dernier array (voir ci-dessous) où sec_position_nam est Droite. Je veux enregistrer toutes les lignes dans la base de données. ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| Comment entrer plus d'une ligne dans la base de données en utilisant la fonction joomla save().

Et la sortie var_dump($player_sec_positions_data) est comme ça ...

array 
    'player_id' => int 1 
    'sec_position_name' => string 'Left' (length=4) 

    array 
    'player_id' => int 1 
    'sec_position_name' => string 'Middle' (length=6) 

    array 
    'player_id' => int 1 
    'sec_position_name' => string 'Right' (length=5) 

Répondre

0

Vous devez obtenir la table dans la boucle, comme somehing:

class footballModelPlayer extends JModelAdmin 
{ 

    public function save ($data) 
    { 
     foreach ($data['sec_position_name'] as $pos_name) 
     { 
      $table_two = $this->getTable('player_sec_positions', 'footballTable', array()); 

      $player_sec_positions_data = array(); 
      $player_sec_positions_data['player_id'] = $data['player_id']; 

      $player_sec_positions_data['sec_position_name'] = $pos_name; 

      // var_dump($player_sec_positions_data); 
      $table_two->bind($player_sec_positions_data); 
      $table_two->save($player_sec_positions_data); 
     } 

     return $data['player_id']; 
    } 
} 
0

Je l'ai résolu en utilisant cela.

Peut-être que ce n'est pas une bonne approche.

$player_id = $data['player_id']; 

$player_sec_positions_data = array(); 

$db = $this->getDBO(); 
$query = "INSERT INTO #__football_player_sec_positions (player_id,sec_position_name) 
      VALUES "; 

foreach ($data['sec_position_name'] as $pos_name) { 
    $player_sec_positions_data['player_id'] = $player_id; 

    $player_sec_positions_data['sec_position_name'] = $pos_name; 

    $query .= "($player_id, '$pos_name'),"; 
} 

$query = rtrim($query, ","); 


$db->setQuery($query); 
$db->query(); 
+0

Avez-vous essayé ma solution au lieu de créer des insertions de base de données natives? – Laoneo