суббота, 8 июля 2017 г.

LAREVEL. ВЫПОЛНЕНИЕ SQL-ЗАПРОСОВ



Фасад DB: vendor\laravel\framework\src\Illuminate\Support\Facades\DB.php
<?php

namespace Illuminate\Support\Facades;

/**
* @see \Illuminate\Database\DatabaseManager
* @see \Illuminate\Database\Connection

*/
class DB extends Facade
{

protected static function getFacadeAccessor()
{
return 'db';
}
}

vendor\laravel\framework\src\Illuminate\Database\DatabaseManager.php
vendor\laravel\framework\src\Illuminate\Database\DatabaseServiceProvider.php
vendor\laravel\framework\src\Illuminate\Database\Connection.phpздесь описаны методы select, update, insert, delete, statement.
Откроем наш файл AboutController.php
<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use DB; // доступ к фасаду БД

use Illuminate\Http\Response; // предоставим доступ к классу Response. Если мы не добавим эту строку, будет сгенерировнно сключение.
use Illuminate\Http\RedirectResponse;

class AboutController extends Controller
{
public function show() {

if(view()->exists('default.about')) {
$articles = DB::select("SELECT * FROM `articles`"); // select сразу возвращает результат выборки
dump($articles); // еще есть хелпер dd = dump + die


return view('default.about')->withTitle('Hello World');
}
abort(404);
}
}

Выводится массив статьей.

Вернем только статью с id = 2:
$articles = DB::select("SELECT * FROM `articles` WHERE id = ?", [2]);
dump($articles);

Неименованные метки мы можем заменить именованными:
$articles = DB::select("SELECT * FROM `articles` WHERE id = :id", ['id'=>2]);
dump($articles);

Добавление информации в БД:
public function show() {
if(view()->exists('default.about')) {
DB::insert("INSERT INTO `articles` (`name`, `text`, `img`) VALUES (?, ?, ?)", ['test 1', 'TEXT', 'pic7.jpg']);
$articles = DB::select("SELECT * FROM `articles`");
dump($articles);

return view('default.about')->withTitle('Hello World');
}
abort(404);
}
}
Обновление данных:
public function show() {

if(view()->exists('default.about')) {

$result = DB::update('UPDATE `articles` SET `name` = ? WHERE `id` = ?', ["TEST 2", 5]);

$articles = DB::select("SELECT * FROM `articles`");
dump($articles);

return view('default.about')->withTitle('Hello World');
}
abort(404);
}

Посмотрим, что находится в переменной result:
public function show() {

if(view()->exists('default.about')) {

$result = DB::update('UPDATE `articles` SET `name` = ? WHERE `id` = ?', ["TEST 3", 5]);

$articles = DB::select("SELECT * FROM `articles`");
dump($result); // 1. Была затронута одна запись.
dump($articles);

return view('default.about')->withTitle('Hello World');
}
abort(404);
}
}

Удаление информации из БД:
public function show() {

if(view()->exists('default.about')) {

$result = DB::delete('DELETE FROM `articles` WHERE `id` = ?', [5]); // delete также возвращает кол-во затронутых строк

$articles = DB::select("SELECT * FROM `articles`");
dump($result); // 1. Была затронута одна запись.
dump($articles);

return view('default.about')->withTitle('Hello World');
}
abort(404);
}



Как получить идентификатор последней добавленной записи:
public function show() {

if(view()->exists('default.about')) {

DB::insert("INSERT INTO `articles` (`name`, `text`, `img`) VALUES (?, ?, ?)", ['test 1', 'TEXT', 'pic7.jpg']);
$result = DB:: connection()->getPdo()->lastInsertId();

$articles = DB::select("SELECT * FROM `articles`");
dump($result); // id последней вставленной записи
dump($articles);

return view('default.about')->withTitle('Hello World');
}
abort(404);
}

Общие запросы. Например, удаление таблицы.
DB::statement('DROP table `articles`');

В файле app\Providers\ServiceProvider.php отобразим выполняемые запросы.

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Blade;
use Response;
use DB;

class AppServiceProvider extends ServiceProvider
{

public function boot()
{
Response::macro('myRes', function($value) {
return Response::make($value);
});

// listen позволяет описать функцию обработчик или кол-бэк функцию
// $query - объект sql-запроса
DB::listen(function ($query) {
dump($query->sql);
dump($query->bindings); // содержит массив параметров, которые передаются в запрос
});

}


public function register()
{
//
}
}



Комментариев нет:

Отправить комментарий

Materialize-css. Футер

Сделаем футер и прижмем к низу страницы. Документация: https://materializecss.com/footer.html