Спасибо, что прочитали мой вопрос :)
Я пытаюсь настроить многопользовательский режим в laravel 5.8.
С помощью этого урока (https://codecourse.com/watch/laravel-tenancy-multi-database) я приблизился к своей цели уже на шаг ближе, но вынужден отступить из-за следующего сообщения об ошибке:
SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец «uuid» в «списке полей» (SQL: вставить в tenant_connections
(database
, company_id
, uuid
, updated_at
, created_at
) значения (fresh_12, 12, 3d98bc5a-cf74-4cb1-9b30-63a47a42de4a, 2019-03-26 10:53:07, 2019-03-26 10:53:07))
Значение uuid вставляется в таблицу "companies", но тем не менее laravel ищет столбец uuid в таблице "tenant_connections".
В качестве первого подхода я создал запрошенный столбец в таблице "tenant_connections". Это «решило» проблему, но вызвало следующее новое сообщение:
Аргумент 1, передаваемый в App \ TenantConnection :: newDatabaseConnection (), должен реализовывать интерфейс App \ Tenant \ Models \ Tenant, данный экземпляр App \ TenantConnection вызывается в / home / vagrant / code / app / Tenant / Traits / IsTenant. PHP на линии 23
Я вставил наиболее важные фрагменты кода ниже:
Извлечение строки 13-26 в -> app / Tenants / Traits / isTenant.php - Traitfile
public static function boot(){
parent::boot();
static::creating(function($tenant) {
$tenant->uuid = Uuid::generate(4);
});
static::created(function($tenant) {
$tenant->tenantConnection()->save(static::newDatabaseConnection($tenant));
});
}
Выдержка маршрутов / web.php, где создаются клиенты при каждой загрузке страницы
use App\Company;
Route::get('/', function () {
Company::create(['name' => 'Oli']);
return view('home');
});
app / Company.php File
<?php
namespace App;
use App\Tenant\Models\Tenant;
use App\Tenant\Traits\IsTenant;
use Illuminate\Database\Eloquent\Model;
class Company extends Model implements Tenant
{
use IsTenant;
protected $fillable =['name', 'uuid'];
}
app / Tenants / Models / Tenant.php - пустой интерфейс
<?php
namespace App\Tenant\Models;
interface Tenant {
}
Два столбца uuid в разных таблицах, не имеют никакого смысла. Мое вышеописанное решение было просто обходным путем, чтобы приблизиться к проблеме.
Предположительно, я должен указать laravel, что uuid нужно вставить только один раз, и laravel не нужно искать этот столбец в другой таблице. Но я не знаю почему :) 1039
Ваша помощь высоко ценится. Заранее спасибо.