З’єднання з базою даних
Нижче наведено кроки для зміни з’єднання з базою даних, яке використовують стійкі моделі workflow v2. Це потрібно лише тоді, коли ви хочете використовувати інше з’єднання, ніж типове з’єднання вашого застосунку Laravel.
Повний контракт перевизначення v2, зокрема підкласи зі зміненими таблицями, правила серіалізації, заміну репозиторію, діагностику стану та вимоги до міграцій, наведено в матриці налаштування.
- Створіть класи в каталозі моделей застосунку, які успадковують базові моделі v2
- Задайте потрібний
$connectionу кожному класі - Опублікуйте файл налаштувань workflow
- Оновіть прив’язки моделей
workflows.v2, щоб вони вказували на ваші класи
Успадкування моделей workflow v2
Додайте цей код до app\Models\V2\WorkflowInstance.php.
namespace App\Models\V2;
use Workflow\V2\Models\WorkflowInstance as BaseWorkflowInstance;
class WorkflowInstance extends BaseWorkflowInstance
{
protected $connection = 'mysql';
}
Повторіть цей шаблон для кожної стійкої моделі v2, яку потрібно перенаправити, щонайменше для таких:
Workflow\V2\Models\WorkflowRunWorkflow\V2\Models\WorkflowHistoryEventWorkflow\V2\Models\WorkflowTaskWorkflow\V2\Models\WorkflowCommandWorkflow\V2\Models\WorkflowLinkWorkflow\V2\Models\ActivityExecutionWorkflow\V2\Models\ActivityAttemptWorkflow\V2\Models\WorkflowTimerWorkflow\V2\Models\WorkflowFailureWorkflow\V2\Models\WorkflowRunSummaryWorkflow\V2\Models\WorkflowScheduleWorkflow\V2\Models\WorkflowScheduleHistoryEvent
Кожен підклас має оголосити protected $connection = 'mysql'; або іншу назву
з’єднання, визначену в config/database.php.
Реєстрація власних моделей
Опублікуйте файл налаштувань workflow та оновіть прив’язки
workflows.v2.*_model, щоб вони вказували на ваші класи:
// config/workflows.php
'v2' => [
'instance_model' => App\Models\V2\WorkflowInstance::class,
'run_model' => App\Models\V2\WorkflowRun::class,
'history_event_model' => App\Models\V2\WorkflowHistoryEvent::class,
'task_model' => App\Models\V2\WorkflowTask::class,
'command_model' => App\Models\V2\WorkflowCommand::class,
// ...
],
Пакет отримує моделі через Workflow\V2\Support\ConfiguredV2Models, тож кожен
зв’язок або запит до моделі v2 автоматично використовуватиме налаштоване з’єднання.
Якщо ви виходите за межі підкласів із сумісною схемою та змінюєте автоматично
визначений зовнішній ключ власної instance_model, пакет під час запуску
перевіряє, що зв’язки runs(), commands() та updates() явно перевизначено.
Міграції
Міграції Workflow автоматично завантажуються з пакета
(WorkflowServiceProvider::loadMigrationsFrom) і виконуються через типове
з’єднання з базою даних. Якщо таблиці v2 використовують інше з’єднання,
опублікуйте міграції командою php artisan vendor:publish --tag=migrations та
задайте protected $connection = 'mysql'; у кожному опублікованому класі
міграції, щоб php artisan migrate виконав їх у правильній базі даних.