Настройка:
Codeigniter 3 работает на одном из вариантов сервера PHP 5. Использование построителя запросов для работы с файлом db.
Фон:
Создание программного обеспечения с профилем клиента. Пользователи могут добавить несколько заметок в профиль и связать контакт с этой заметкой. Затем профиль отображает все заметки и контакт в соответствующем профиле с использованием метода join()
из Query Builder Codeigniter 3.
Проблема:
Заметка может быть добавлена без контакта с клиентом, в случае обобщенной заметки. Это устанавливает значение по умолчанию NULL
в базе данных, что, в свою очередь, не позволяет client_model возвращать заметки, поскольку она не может присоединиться к таблицам.
Текущий код:
function get_client_notes($client_id)
{
$this->db->join('nh_note_types', 'nh_note_types.type_id = nh_client_notes.client_notes_type');
$this->db->join('nh_user_profiles', 'nh_user_profiles.user_profile_user_id = nh_client_notes.client_notes_added_by');
$this->db->join('nh_client_contacts', 'nh_client_contacts.client_contact_id = nh_client_notes.client_notes_client_contact_id');
$this->db->order_by("client_notes_added_date", "desc");
$query = $this->db->get_where('nh_client_notes', array('client_notes_client_id' => $client_id));
return $query;
}
В настоящее время, если значение для client_notes_client_contact_id
равно NULL
, он не будет возвращать никаких данных для этой строки.
Я пытаюсь выяснить, есть ли способ сделать следующее: ЕСЛИ client_notes_client_contact_id
не равно нулю, тогда присоединяйтесь к таблицам, иначе продолжайте прошлое.
Или любым другим способом присоединения к таблицам, если есть значение и где оно NULL
, тогда не присоединяться.
Любая помощь приветствуется!
join()
эквивалентен соединению MySQL, поэтому он не соединяется по значениям, где онNULL
, так что вам нужно, чтобы это (nh_client_contacts
) условие былоLEFT JOIN
, чтобы остальные можно было найти? Перед возвратом$query
-log_message()
$this->db->last_query()
. Сначала поработайте с MySQL, а затем исправьте это в построителе. - person MackieeE   schedule 24.03.2016