Ранняя инициализация клиента Laravel для системы с несколькими базами данныхPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Ранняя инициализация клиента Laravel для системы с несколькими базами данных

Сообщение Anonymous »

Я создаю мультитенант laravel (каждый арендатор имеет отдельную базу данных) с пакетом tenancyforlaravel. Теперь я создаю структуру, в которой пользователи могут создавать свои собственные сущности, например: автомобили, рабочие места и т. д. Я успешно сделал это в центральной базе данных, но столкнулся с проблемой, когда создавал эту структуру для арендаторов. Сначала я создаю соответствующие поля, которые будут частью сущности, затем я создаю сущность и добавляю только что созданные поля, в этот момент создаются миграции, модели, контроллеры, ресурсы, и таблица БД выглядит следующим образом:

Код: Выделить всё

 select * from entities;
+----+------+-------+-----------+---------------------+---------------------+
| id | name | order | is_active | created_at          | updated_at          |
+----+------+-------+-----------+---------------------+---------------------+
|  1 | jobs | 0     |         1 | 2024-05-23 11:51:51 | 2024-05-23 11:51:51 |
+----+------+-------+-----------+---------------------+---------------------+
Это в базе данных арендатора. ПРИМЕЧАНИЕ. Каждая база данных арендатора имеет префикс: tenant, а полное имя таблицы будет tenant+profilename, в моем случае: tenantagency;
Пока все хорошо. . Проблема возникает, когда я пытаюсь добавить маршруты для этого объекта, и на практике я делаю что-то вроде этого:

Код: Выделить всё

// tenant.php
Route::middleware([
'web',
InitializeTenancyByDomain::class,
PreventAccessFromCentralDomains::class,
InitializeTenancy::class,
])->group(function () {
....
$tenant->get('entity', $baseViewController);
$tenant->get('fields', $baseViewController);

// Include custom web entity routes
require __DIR__.'/tenant/entities/entityRoutesWEB.php';
....
});

//  .../entityRoures/php
$entities = Entities::all();
// dd($entities);
foreach ($entities as $entity) {
$entityName = strtolower($entity->name);
$controllerName = 'App\Http\Controllers\API\Tenant\\' . ucfirst($entityName) . 'Controller';

// Define routes for this entity
Route::get("/{$entityName}", [BaseViewController::class, 'index']); // Fetch data for the entity
}

So my problem is here: `$entities = Entities::all();
// dd($entities);` this is getting the entities from the central db.

Код: Выделить всё

    // /Tenant/EntitiesModel.php
namespace App\Models\Tenant\Entities;
// /Central/EntitiesModel.php
namespace App\Models\Central\Entities;
ПРИМЕЧАНИЕ: та же логика, которую я использовал для центральной базы данных, и она работает.

Подробнее здесь: https://stackoverflow.com/questions/785 ... -db-system
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»