Mysql
 sql >> Database >  >> RDS >> Mysql

Codeigniter 2 $this->db->join usato con $this->db->update

Ok, bene, sono riuscito a trovare una soluzione "pulita", usando codeigniter's join, set, ecc. Quindi la cosa interessante è che avrai tutti i vantaggi di CI nell'usare $this->db->join(), $this->db->join(), ecc. come l'escape e l'aggiunta di virgolette.

Quindi prima fai tutte le tue cose CI:

$this->db->join(..) // Set all your JOINs
$this->db->set(..) // Set your SET data
$this->db->where(..) // Set all your WHEREs

Quindi puoi creare la query utilizzando gli elementi di query pronti, puliti ed evitati di Active Record:

// JOIN
$sql = "UPDATE $this->baseTable ";
$sql .= implode(' ', $this->db->ar_join);

// SET
$sql .= ' SET';
$setArray = array();
foreach ($this->db->ar_set as $column=>$newValue)
    array_push($setArray, " $column = $newValue");
$sql .= implode(',', $setArray);

// WHERE
$sql .= ' WHERE '.implode(' ', $this->db->ar_where);

$this->db->query($sql);

Se qualcuno ha una soluzione migliore, la accetterò volentieri e la userò invece