#php #codeigniter #activerecord
#php #codeigniter #activerecord
Вопрос:
у меня есть этот оператор PDO, который работает нормально, но как я могу преобразовать его в активную запись в CodeIgniter?
Мой оператор PDO:
UPDATE mytable set total=bought re_order-balance where retail_id=? and stock=? and stock_date=?
Я пробовал это, но не сработало:
$data=array(
//some other fields
'total'=>'bought' 're_order' - 'balance'
);
$this->db->where('retail_id', $someid);
$this->db->where('stock', $somestock);
$this->db->where('stock_date', $somestock);
$this->db->update('mytable',$data);
Когда я попробовал это, это не выдало никаких ошибок в то же время, это не обновило мое поле total в базе данных. Пожалуйста, любая помощь. Спасибо.
Комментарии:
1. Являются ли покупка, повторный заказ и баланс строками или числами?
2. Все они являются целыми числами. Они также все поля в одной таблице.
3. Итак, `$data = array( ‘total’ => ($buyed $ re-order — $ balance ) ) так что подходите лучше. На данный момент вы пытаетесь выполнить математические вычисления для строк
4. Также я предпочитаю убедиться, что я обновляю, используя уникальный идентификатор таблицы, использует ли какой-либо из приведенных выше операторов where уникальный идентификатор таблиц?
5. Все остальное работает, за исключением добавления. Я не думаю, что это решение сработает, это поле базы данных, при вводе ‘$’ оно выглядит как переменная.
Ответ №1:
Следующий код должен создать необходимый запрос. Третий параметр set()
метода предотвращает утечку данных. Вы можете прочитать больше об этом в документах
$this->db->set('total', 'bought re_order - balance', FALSE)
->where('retail_id', $someid)
->where('stock', $somestock)
->where('stock_date', $somestock)
->update('mytable');