Migrations
  1. Operații tip update pe câmpuri text

    Atunci când am de modificat parţial un câmp text,
    NU hardcodez / suprascriu valorile câmpurilor text în totalitate:
    $this->execute('UPDATE table SET textField = 'updated text value' WHERE id=2');

    CI înlocuiesc doar acele porțiuni din text direct implicate:
    $this->execute('UPDATE table SET textField = REPLACE(textField, "to_replace", "replacement") WHERE id = 2');
    sau
    $this->execute('UPDATE table SET textField = CONCAT(textField, "text_to_concat") WHERE id = 2');

    Astfel mă asigur că nu suprascriu modificări asupra restului textului (părțile din el cu care migrarea mea nu are treabă) ce vin prin altă migrare, pe care eu încă nu o am (s-a întâmplat).

    Obs: prin metoda $this->update() nu merg funcţii mysql în text value, adică $this->update('table', ['textField' => 'CONCAT(textField, "text_to_add")', $condition);valoarea rezultată va fi textual ‘CONCAT(textField, “text_to_add”)’, nu rezultatul concatenării.

 

About

Das Yii Man

Leave a Reply

Your email address will not be published. Required fields are marked *

[TOP]