Заявление об обновлении активной записи Codeigniter с объединением - PullRequest
7 голосов
/ 06 марта 2012

Это запрос, который я пытаюсь выполнить с помощью активной записи:

UPDATE `Customer_donations` cd 
join Invoices i on i.cd_id = cd.cd_id 
set cd.amount = '4', cd.amount_verified = '1' 
WHERE i.invoice_id =  '13';

Это моя попытка активной записи:

$data = array('cd.amount'=>$amount, 'cd.amount_verified'=>'1');
$this->db->join('Invoices i', 'i.cd_id = cd.cd_id')
     ->where('i.invoice_id', $invoiceId);


// update the table with the new data
if($this->db->update('Customer_donations cd', $data)) {
  return true;
}

И это запросэто на самом деле получается:

UPDATE `Customer_donations` cd 
SET `cd`.`amount` = '1', `cd`.`amount_verified` = '1' 
WHERE `i`.`invoice_id` =  '13'

Почему этот активный оператор записи не применяет мое предложение соединения?

Ответы [ 2 ]

16 голосов
/ 06 марта 2012

Как насчет решения ниже? Немного некрасиво, но это дало то, что вы ожидали в своем вопросе.

$invoiceId = 13;
$amount = 4;
$data = array('cd.amount'=>$amount, 'cd.amount_verified'=>'1');

$this->db->where('i.invoice_id', $invoiceId);

$this->db->update('Customer_donations cd join Invoices i on i.cd_id = cd.cd_id', $data);
1 голос
/ 12 марта 2015

Еще чище, так как обновление принимает третий параметр массива «где»:

$invoiceId = 13;
$amount = 4;
$data = array('cd.amount'=>$amount, 'cd.amount_verified'=>'1');
$this->db->update('Customer_donations cd join Invoices i on i.cd_id = cd.cd_id', 
  $data, array('i.invoice_id' => $invoiceId));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...