Начнем

Учебное пособие

Концепции

Приложение

Запрос

Ответ

Routing

Обработка ошибок

Cook book

Дополнения

Contributing

Использование Eloquent вместе со Slim



Вы можете использовать ORM базы данных, например Eloquent для подключения вашего приложения SlimPHP к базе данных.

Добавление Eloquent в ваше приложение

composer require illuminate/database "~5.1"
Figure 1: Добвить Eloquent в ваше приложение.

Настройки Eloquent

Добавьте настройки базы данных в массив настроек Slim.

<?php
return [
    'settings' => [
        // Slim Settings
        'determineRouteBeforeAppMiddleware' => false,
        'displayErrorDetails' => true,
        'db' => [
            'driver' => 'mysql',
            'host' => 'localhost',
            'database' => 'database',
            'username' => 'user',
            'password' => 'password',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ]
    ],
];
Figure 2: Массив настроек.

В вашем dependencies.php или где вы добавляете свои Служебные Фабрики:

// Service factory for the ORM
$container['db'] = function ($container) {
    $capsule = new \Illuminate\Database\Capsule\Manager;
    $capsule->addConnection($container['settings']['db']);

    $capsule->setAsGlobal();
    $capsule->bootEloquent();

    return $capsule;
};
Figure 3: Конфигурация Eloquent.

Передайте контроллеру экземпляр вашей таблицы

$container[App\WidgetController::class] = function ($c) {
    $view = $c->get('view');
    $logger = $c->get('logger');
    $table = $c->get('db')->table('table_name');
    return new \App\WidgetController($view, $logger, $table);
};
Figure 4: Передайте объект таблицы в контроллер.

Запросить таблицу с контроллера

<?php

namespace App;

use Slim\Views\Twig;
use Psr\Log\LoggerInterface;
use Illuminate\Database\Query\Builder;
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;

class WidgetController
{
    private $view;
    private $logger;
    protected $table;

    public function __construct(
        Twig $view,
        LoggerInterface $logger,
        Builder $table
    ) {
        $this->view = $view;
        $this->logger = $logger;
        $this->table = $table;
    }

    public function __invoke(Request $request, Response $response, $args)
    {
        $widgets = $this->table->get();

        $this->view->render($response, 'app/index.twig', [
            'widgets' => $widgets
        ]);

        return $response;
    }
}
Figure 5: Пример контроллера, запрашивающего таблицу.

Запрос из таблицы с where

...
$records = $this->table->where('name', 'like', '%foo%')->get();
...
Figure 6: Поиск запросов для имен, соответствующих foo.

Запрос таблицы по идентификатору

...
$record = $this->table->find(1);
...
Figure 7: Выбор строки на основе идентификатора.

Больше информации

Eloquent Documentation