CodeIgniter отбрасывает предложение JOIN в операторе SQL (Active Record) - PullRequest
0 голосов
/ 18 августа 2011

У меня есть одна функция в одной из моих моделей CI:

function update_uu_feature($feature, $lang, $data) 
{
    $feature = str_replace('_', '-', $feature);
    $this->db->where('navigation', $feature);
    $this->db->where('language', $lang);
    $this->db->join('all_video_names', 'all_video_names.video_id = all_uu_features.video_id', 'inner');
    return $this->db->update('all_uu_features', $data);
} 

Но строка «соединения» отбрасывается.В профилировщике он выводит:

UPDATE `all_uu_features` SET `page_title` = 'Laser', `title` = 'Test', `keywords` = 'Test', `description` = 'Test', `feature_text` = '<p>Test text</p>', `learn_more_about` = 'Test Text 2', `overview` = 'test', `copy` = 'test' WHERE `navigation` = 'laser-interface' AND `language` = 'en'

Может кто-нибудь помочь мне с синтаксисом?Благодарю.Большая часть данных находится в таблице all_uu_features, за исключением имени видео, которое находится в таблице all_video_names.Они объединяются в столбце video_id в каждой таблице.Другими словами, все столбцы в приведенном выше утверждении находятся в all_uu_features, кроме имени видео.Надеюсь, это понятно.

Выражение SQL выше показывает, что данные возвращаются в записи и обрабатываются функцией, просто по какой-то причине она не принимает соединение.

1 Ответ

0 голосов
/ 18 августа 2011

Мне кажется, что класс Active Record CI не поддерживает использование соединений в операции update ().Конечно, если вы посмотрите на код (в DB_active_rec.php), метод update() даже не смотрит на какие-либо объединения, которые были установлены

Из update ():

$sql = $this->_update($this->_protect_identifiers($table, TRUE, NULL, FALSE), $this->ar_set, $this->ar_where, $this->ar_orderby, $this->ar_limit);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...