SQL-запрос (выборка, обновление и удаление записей)

Выборка

Выбрать данные можно через метод DB::select().

use Illuminate\Support\Facades\DB;
// …

$posts = DB::select('SELECT id, title FROM posts');

Параметры рекомендуется передавать через второй атрибут метода DB::select(), т.к. это позволяет избежать SQL-инъекции (исполнение стороннего SQL-кода).

use Illuminate\Support\Facades\DB;
// …

$params = [
    'category_id' => $request->query('id'), // аналог $_GET['id']
];

$posts = DB::select('SELECT id, title FROM posts WHERE category_id = :category_id', $params);

Код выше заменит :category_id на переданный параметр из массива $params. При этом переданный параметр будет обработан для безопасного использования в SQL-коде.

Добавление

Добавить запись можно через метод DB::table->insert().

// Добавить запись
DB::table('posts')->insert(['title' => 'Имя страницы', 'category_id' => 4]);

Если надо добавить несколько записей, то рекомендуется передавать несколько массивов в метод DB::table->insert(), т.к. в этом случае несколько записей добавятся в базу данных за один запрос.

DB::table('posts')->insert([
    ['title' => 'Имя страницы',    'category_id' => 4],
    ['title' => 'Вторая страница', 'category_id' => 4],
    ['title' => 'Третья страница', 'category_id' => 12],
]);

Метод DB::table->insert() возвращает «true», если записи были успешно добавлены. Если надо вернуть «id» новой записи, то используется метод DB::table->insertGetId().

// Добавить запись и вернуть id новой записи
$id = DB::table('posts')->insertGetId(['title' => 'Имя страницы', 'category_id' => 4]);

Обновление

Обновить запись можно через метод DB::table->update().

// Обновить запись
DB::table('posts')->where(['id' => 14])->update(['title' => 'Имя страницы']);

Метод DB::table->update() возвращает количество обновлённых записей.

Также можно увеличить значение поля на указанное число.

// Увеличить значение 'rating' на 5
DB::table('users')->where(['id' => 14])->increment('rating', 5);

// Уменьшить значение 'rating' на 5
DB::table('users')->where(['id' => 14])->decrement('rating', 5);

Удаление

Удалить записи можно через метод DB::table()->delete().

use Illuminate\Support\Facades\DB;
// …

DB::table('posts')->where(['id' => 14])->delete();

Метод DB::table()->delete() возвращает количество удалённых записей.

Если надо удалить все записи, то рекомендуется использовать метод DB::table()->truncate(), который также сбрасывает автоинкремент на ноль.

DB::table('logs')->truncate();