У меня есть уникальное поле в таблице, и я бы хотел заменить его новым значением. С SQL я могу просто replace
, а не insert
обычным способом. Можно ли это сделать в Propel без написания SQL?Как я могу использовать функцию «замены» SQL из Propel ORM?
2
A
ответ
1
Это не то, что вы ищете, но выполняет то же самое.
Согласно документам MySQL, выполнение REPLACE вызывает DELETE и INSERT.
Таким образом, вы могли бы потенциально сделать это:
$book->delete();
$book->setDeleted(false);
$book->setId(null);
$book->setNew(true);
$book->save();
Где книга представляет собой объект, который вы заменяете.
Вы можете видеть фрагмент кода здесь:
http://sandbox.propelorm.org/c8d3d29
Я искал базу кода Propel и не видел никакого кода со ссылкой на REPLACE ключевое слово в MySQL.
Надеюсь, это поможет!
Да, но то, что тонко опущено документом MySQL, заключается в том, что REPLACE хорошо работает, когда дело доходит до использования внешних ключей, в которых DELETE + INSERT не будет работать из-за этих FK. –
Это мило с их стороны. – William