CodeIgniter MVC и обновление двух разных таблиц в одной функции - PullRequest
1 голос
/ 03 апреля 2012

У меня есть страница на основе JavaScript, где сетка отображает все данные для зарегистрированных пользователей, которые взяты из базы данных. В пользовательском интерфейсе у меня также есть столбец с именем 'groups', который отображает группы, в которых участвует каждый пользователь, но этоинформация берется с использованием дополнительных двух дополнительных таблиц - 'groups' с 'id' и 'group_name' в качестве столбцов и таблицы 'users_groups', которая имеет 'user_id' и 'group_id' в качестве столбцов, которые являются внешними ключами, связанными с 'users' итаблицы 'groups'.

Проблема в том, что когда вы щелкаете, чтобы редактировать любого пользователя из сетки пользовательского интерфейса, появляется AJAX, который публикует JSON с информацией для пользователя, которая включает столбец 'groups', который на самом деле нечасть таблицы «пользователи».Итак, у меня есть это:

$data = json_decode($this->input->post('data'), true);

, которое первоначально (когда группы еще не были добавлены) было преобразовано в это:

$data = array(
         'id' => $data['id'],
         'email' => $data['email'],
         'firstname' => $data['firstname'],
         'lastname' => $data['lastname'],
         'usertype' => $data['usertype']
          );

и затем проанализировано в модель с именем 'mUsers'где находится функция обновления:

$query = $this->mUsers->update($data);

И модель с тех пор была очень простой, потому что была только одна таблица:

public function update($data)
    {
        $this->db->where('id', $data['id']);
        $query = $this->db->update('users', $data);

        return true;
    }

Но теперь я должен обновить другую таблицу - 'users_groupsи я думаю о своих возможностях. Можно ли просто добавить к массиву $ data показанный над другой записью:

'groups' => $data['groups']

И попытаться реализовать всю логику в одной функции (если это вообще возможно)Я не смог найти информацию, могу ли я иметь два разных запроса на активную запись в одной функции), или вторая вещь, о которой я подумал, была после декодирования JSON, чтобы сделать что-то вроде:

$dataGroups = array(
    'groups' => $data['groups'] //adding groups data to be fetched for update   
                );

, а затем проанализироватьданные для новой функции, что-то вроде:

$q = $this->mUsers->updateGroups($dataGroups);

Каков будет лучший подход в этом случае?

Спасибо, Лерон

1 Ответ

1 голос
/ 03 апреля 2012

Сделать обе функции. И вызывать их при необходимости также можно будет вызывать только usergroup функцию в одиночку

//this function update all user data including group
public function updateUser($data, $changeGroup = true)
{
    $this->db->where('id', $data['id']);
    $query = $this->db->update('users', $data);
     if($changeGroup) {
       $this->updateUserGroup($data['id'], $data['groups']);
    }
}

//Update user group
public function updateUserGroup($userid, $usergroups)
{
   //Update user groups
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...