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. База данных

Обновление записей (update)

PreviousВставка записей (insert)NextУдаление записей (delete)

Last updated 4 years ago

Was this helpful?

Помимо вставки и выборки данных конструктор запросов так же позволяет и обновлять данные в таблицах. Так же как и в остальных случаях работы с базой данных нам необходимо получить объект подключения к базе данных.

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

В примерах ниже мы так же будем работать с таблицей test_table, структуру которой вы можете посмотреть в предыдущей статье

Обновление строки в БД

Рассмотрим пример обновления записи в БД. Так же как и метод insert метод update принимает пару название_колонки => значение.

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

Указанный пример обновит строку с идентификатором 1 в таблице test_table и установит значения столбцов, переданные в методе update. Обратите внимание, что мы ещё добавили вызов метода where, который устанавливает условие выборки. Для уточнения выборки может вызываться так же несколько методов where чтобы задать точное условие выборки записей, которые нужно обновить.

Обновление или вставка

Часто встречается ситуация, когда нам нужно обновить запись в базе данных если она уже есть или же вставить если её нет. Обычно это делается вручную. Проверяется наличие записи в БД, и в зависимости от этого вызываются методы на вставку или обновление записи. Это не всегда удобно и заставляет писать много кода. Конструктор позволяет упростить выполнение этой операции. По факту он делает то же самое, но для выполнения этих действий вам не нужно вручную писать выборку, проверку и вставку или обновление.

Рассмотрим на примере:

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

В этом примере будет выполнен поиск строки с полем name в котором содержится значение test и если эта запись уже существует, в ней будет обновлено поле text. Если такой строки в БД найдено не будет, то она будет вставлена с обоими значениями. Подытожим. Метод updateOrInsert принимает 2 массива. В первом аргументе принимается массив с условиями, которые будет выполнен поиск записи, а во втором будут значения, которые будут установлены. Если записи не существует, то будет вставлена новая запись со значениями из обоих массивов.

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

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