CodeIgniter с активными записями и or_likePhp

Кемеровские программисты php общаются здесь
Ответить
Гость
 CodeIgniter с активными записями и or_like

Сообщение Гость »

У меня есть панель администратора, в которой отображается вся информация о пользователях, полученная из таблицы базы данных с именем «пользователи».

Есть окно поиска, и я использую активные записи для получения данных. Но, похоже, с этим есть проблема, и я не могу ее понять. Я почти уверен, что это часть or_like, но эта ошибка меня смущает.

Вот запрос, который я делаю, передавая одну переменную $data размещение информации из окна поиска:

Код: Выделить всё

public function get($data) {

$this->db->select('id, email, firstname, lastname, usertype, ts_created, ts_last_login, position');

if (isset($data['query']) && $data['query'] != '') {
$fields = json_decode($data['fields'], true);

$this->db->like($fields[0], $data['query']);

foreach ($fields as $field) {
$this->db->or_like($field, $data['query']);
}

}

$this->db->limit($data['limit'], $data['start']);
if (isset($data['sort'])) {
$sort = json_decode($data['sort'], true);
$this->db->order_by($sort[0]['property'], $sort[0]['direction']);
}

$query = $this->db->get('users');
Поскольку это своего рода рефакторинг существующей программы, мне пришлось добавить новую функцию — «группы», которая не является частью таблицы пользователей, поэтому я добавляю ключ[ 'groups']=>со значениями, повторяющими результат запроса:

Код: Выделить всё

$users = array();
foreach ($query->result_array() as $user) {
$users[] = array_merge($user, array('groups' =>''));
}

$count = sizeof($users);
//Adding groups id's as values to the group key
foreach ($this->getGroupsAndUsers() as $group) {
for ($i = 0; $i < $count; $i++) {
if ($users[$i]['id'] == $group['user_id']) {
//Begin check
if ($users[$i]['groups'] == '') {
$users[$i]['groups'] .= $group['group_id'];
} else {
$users[$i]['groups'] .= "," . $group['group_id'];
}
//End of check
}
}
}
$result = $users;
return $result;
И при передаче итогового массива в переменную $result это должно быть все, но когда я пытаюсь найти определенного пользователя, я получаю эту ошибку:

Код: Выделить всё

Error Number: 1054

Unknown column 'groups' in 'where clause'

SELECT `id`, `email`, `firstname`, `lastname`, `usertype`, `ts_created`, `ts_last_login`, `position`
FROM (`users`)
WHERE  `firstname`  LIKE '%stefan%'
OR  `firstname`  LIKE '%stefan%'
OR  `lastname`  LIKE '%stefan%'
OR  `email`  LIKE '%stefan%'
OR  `position`  LIKE '%stefan%'
OR  `groups`  LIKE '%stefan%'
он ​​говорит, что группы — это неизвестный столбец, и он отсутствует в списке выбора, но я не уверен, что это настоящая проблема, потому что я действительно вижу группы и у меня есть пользовательский интерфейс в админ-панель для этого. Кроме того, будучи новичком в MySQL, я думаю, что странно получать такой запрос:

Код: Выделить всё

WHERE  `firstname`  LIKE '%stefan%'
OR  `firstname`  LIKE '%stefan%'
OR  `lastname`  LIKE '%stefan%'
OR  `email`  LIKE '%stefan%'
OR  `position`  LIKE '%stefan%'
OR  `groups`  LIKE '%stefan%'
Я имею в виду, это нормальное поведение or_like для получения того же значения?

И в конце, поскольку я здесь действительно потерян, буду очень признателен, если кто-нибудь сможет помочь или подсказать, что может вызвать эту проблему.

Подробнее здесь: https://stackoverflow.com/questions/998 ... nd-or-like
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»