JohnCMS
9.4
9.4
  • Введение
  • Начало работы
    • Установка и системные требования
    • Настройка
    • Структура файлов/папок
  • Общие сведения
    • Проблемы и их решение
    • Конфигурационные файлы (configs)
    • Шаблоны электронных сообщений (email)
    • Отправка электронной почты (email)
    • Работа с уведомлениями
    • Работа с запросом (Request)
    • Валидация
      • NotEmpty - Не пустое значение
      • StringLength - длина строки
      • LessThan - Менее чем
      • EmailAddress - Проверка email адреса
      • ModelExists - Проверка существования записи в БД
      • ModelNotExists - Проверка отсутствия записи в БД
      • Csrf - Проверка токена
      • Flood - проверка на флуд
      • Ban - Проверка банов
      • Captcha - Проверка защитного кода
  • Шаблоны
    • Структура стандартного шаблона
    • Изменение стилей шаблона
    • Создание собственного шаблона
  • Модули
    • Структура модуля
    • Создание модуля
    • Маршрутизация (роутинг)
  • Мультиязычность
    • Перевод JohnCMS на другие языки
    • Исправление ошибок в переводе
  • База данных
    • Настройки подключения к базе данных
    • Выполнение запросов к базе данных
    • Вставка записей (insert)
    • Обновление записей (update)
    • Удаление записей (delete)
  • Eloquent ORM
    • Общие сведения и начало работы
  • Пользователи
    • Поля (свойства) пользователей
    • Работа с пользователями в примерах
    • Работа с текущим авторизованным пользователем
Powered by GitBook
On this page
  • Вставка строки
  • Вставка строки и получение идентификатора вставленной записи
  • Вставка нескольких строк в таблицу
  • Вставка с игнорированием ошибок

Was this helpful?

Export as PDF
  1. База данных

Вставка записей (insert)

PreviousВыполнение запросов к базе данныхNextОбновление записей (update)

Last updated 4 years ago

Was this helpful?

Конструктор запросов позволяет вставлять записи в базу данных. При этом конструктор избавляет вас от необходимости писать SQL запросы самостоятельно. Вы просто используете объектно ориентированные возможности PHP. А если вы используете IDE, то это существенно упростит вам жизнь благодаря автодополнению кода.

Для работы с базой данных нужно получить объект подключения к базе данных. Это можно сделать следующим образом:

$connection = \Illuminate\Database\Capsule\Manager::connection();

Далее рассмотрим примеры вставки данных в таблицу в базе данных. В примере будет рассматриваться таблица со следующей структурой:

Вставка строки

Рассмотрим пример обычной вставки строки в таблицу test_table.

$connection->table('test_table')->insert(
    [
        'name' => 'test name',
        'text' => 'text text text',
    ]
);

Этот пример кода вставит строку в базу данных. Как видите всё достаточно просто. В метод table подается название таблицы с которой работаем, а далее вызывается метод insert в который подается ассоциативный массив в котором ключем является название колонки в таблице test_table, а значением является значение, которое будет вставлено.

Вставка строки и получение идентификатора вставленной записи

В примере выше мы рассмотрели обычную вставку строки в базу данных. Но часто нам нужно вдобавок к этому получить идентификатор вставленной записи. Давайте сделаем это.

$id = $connection->table('test_table')->insertGetId(
    [
        'name' => 'test name',
        'text' => 'text text text',
    ]
);

Как вы видите, вместо метода insert использовался метод insertGetId, а результат присваивается переменной $id. После выполнения этого кода в переменной $id будет содержаться идентификатор вставленной записи.

Вставка нескольких строк в таблицу

Иногда есть необходимость вставить сразу много строк в таблицу в базе данных. Конструктор запросов позволяет сделать и это.

$connection->table('test_table')->insert(
    [
        [
            'name' => 'test name 1',
            'text' => 'text text text 1',
        ],
        [
            'name' => 'test name 2',
            'text' => 'text text text 2',
        ],
        [
            'name' => 'test name 3',
            'text' => 'text text text 3',
        ],
    ]
);

Этот пример кода вставит в таблицу test_table сразу 3 строки. В массиве, который передается в метод insert должны передаваться массивы с записями, которые необходимо вставить.

Вставка с игнорированием ошибок

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

$connection->table('test_table')->insertOrIgnore(
    [
        [
            'id'   => 1,
            'name' => 'test name 1',
            'text' => 'text text text 1',
        ],
        [
            'id'   => 2,
            'name' => 'test name 2',
            'text' => 'text text text 2',
        ],
        [
            'id'   => 3,
            'name' => 'test name 3',
            'text' => 'text text text 3',
        ],
    ]
);

В таблице test_table есть колонка id. Это первичный ключ и он должен быть уникальным. Если мы попытаемся вставить строку с существующим id обычным методом insert, то мы получим ошибку. Метод insertOrIgnore вставит 3 строки в таблицу только в том случае, если в ней нет строк с такими же идентификаторами. Если в таблице есть строки с id = 1, но нет строк с идентификаторами 2 и 3, то вставятся только строки с идентификаторами 2 и 3, а первая строка будет проигнорирована.

Обратите внимание, что вам не нужно заботиться о защите от SQL инъекций. При выполнении запросов в конструкторе используются подготовленные запросы, благодаря чему выполнение запросов становится безопасным. Но учтите, что это не избавляет вас от необходимости делать данные безопасными при выводе из базы данных там где это необходимо.

Структура таблицы test_table