感谢您阅读我的问题:)
我正在努力在laravel 5.8中设置多租户。
借助本教程(https://codecourse.com/watch/laravel-tenancy-multi-database),我的目标已经接近了一步,但是由于以下错误消息而被迫退出:
SQLSTATE [42S22]:找不到列:1054'字段列表'中的未知列'uuid'(SQL:插入tenant_connections
(database
,company_id
,{{1} },uuid
,updated_at
)值(fresh_12,12,3d98bc5a-cf74-4cb1-9b30-63a47a42de4a,2019-03-26 10:53:07,2019-03-26 10:53: 07))
uuid的值已插入“ companies”表中,但是laravel仍在“ tenant_connections”表中查找uuid列。
作为第一种方法,我在“ tenant_connections”表中创建了请求的列。它“解决”了问题,但引起了以下新消息:
传递给App \ TenantConnection :: newDatabaseConnection()的参数1必须实现接口App \ Tenant \ Models \ Tenant,给定的App \ TenantConnection实例,在/ home / vagrant / code / app / Tenant / Traits / IsTenant中调用。第23行的php
我在下面粘贴了最重要的代码段:
-> app / Tenants / Traits / isTenant.php-Traitfile中第13-26行的摘录
created_at
提取routes / web.php并在每个页面加载中创建租户的地方
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));
});
}
app / Company.php文件
use App\Company;
Route::get('/', function () {
Company::create(['name' => 'Oli']);
return view('home');
});
app / Tenants / Models / Tenant.php-界面为空
<?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'];
}
不同表中的两个uuid列没有任何意义。我上面描述的解决方案只是解决问题的一种变通方法。
大概我必须指出laravel,只需将uuid插入一次,而laravel不必在另一个表中查找该列。但我不知道为什么:)
非常感谢您的帮助。预先谢谢你。