Есть ли способ вставить некоторые значения (из одной формы) в две разные таблицы в Codeigniter? - PullRequest
0 голосов
/ 14 января 2019

Я пытаюсь вставить имена (имя и фамилию) детали пользователя, регистрирующегося в [имя] и [фамилия] столбец таблицы user_details . Следовательно, электронная почта и пароль к соответствующим столбцам таблицы snm_users

Как я могу достичь этого в Codeigniter ?

Вот фрагмент моей формы ввода:

<input type="text" name="fname">
<input type="email" name="email">
<input type="password" name="password">

А вот модель для работы с базой данных:

class User_model extends CI_Model {
    public function register ($enc_password){
        $data = array(
            'fname' => $this->input->post('fname'),
            'email' => $this->input->post('email'),
            'password' => $enc_password
        );
        //insert user to database
        return $this->db->insert('snm_users', $data);
    }
}

1 Ответ

0 голосов
/ 15 января 2019

Я считаю, что вы новичок в CodeIgniter. Лучше провести некоторое исследование, чтобы получить представление о том, как на самом деле работает MVC (Model View Controller). Я дам вам основную идею: VIEW - это то, где вы используете HTML, например, отображение формы, любые выходные данные и т. Д. MODEL - это то, где вы пишете код для взаимодействия с БД. Как INSERTIONS, UPDATIONS, SELECT запросов и т. Д. И CONTROLLER - это место, где вы делаете свою бизнес-логику, проверки и т. Д.

В приведенном выше фрагменте кода вы используете данные, отправленные из формы непосредственно внутри вашей МОДЕЛИ. Это не самый лучший подход. Примите это (от $this->input->post() внутри вашего КОНТРОЛЛЕРА, затем выполните проверки и передайте его МОДЕЛИ.

И возвращаясь к вашему вопросу, вы хотите вставить first_name и last_name в user_details_table и email и password в другую таблицу (snm_users_table)

Для этого сначала выполните вставку в основную таблицу. Я верю, что это snm_users_table. И я предполагаю, что у вас есть первичный ключ с именем user_id или что-то для идентификации каждой записи. Итак, вставив в эту основную таблицу User, вы можете получить last_insert_id (идентификатор этой новой вставленной строки), используя эту функцию: $this->db->insert_id()

Теперь вы можете использовать это user_id, возвращаемое вышеупомянутой функцией, чтобы вставить другие детали в вашу вторую таблицу, которая является user_details_table.

Вы можете использовать TRANSACTIONS во время этих вставок, чтобы в конечном итоге вы не вставили запись в одну таблицу и ни одной записи в другую таблицу в случае каких-либо ошибок! Потому что транзакции помогут вам откатить изменения в случае каких-либо проблем!

Подробнее здесь: https://www.codeigniter.com/user_guide/database/transactions.html

Надеюсь, это даст вам идею. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...