Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Codeigniter 2 $this->db->join verwendet mit $this->db->update

Okay, ich habe es geschafft, eine "saubere" Lösung zu finden, indem ich Codeigniter's join, set usw. verwende. Was also cool ist, ist, dass Sie alle Vorteile von CI haben, wenn Sie $this->db->join(), $this->db- verwenden.>join() usw. wie das Escapezeichen und das Hinzufügen von Anführungszeichen.

Erledige also zuerst all deine CI-Sachen:

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

Dann können Sie die Abfrage mit den fertigen, bereinigten und maskierten Abfrageelementen von Active Record erstellen:

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

Wenn jemand eine bessere Lösung hat, akzeptiere ich sie gerne und verwende sie stattdessen