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();
Авторизуйтесь, чтобы добавлять комментарии