The "id" argument does not exist.
[Finalizado Pelo Aluno]
Olá,
Na aula de numero 12 do Curso Laravel Multi-Tenancy Multi Database (referência: aos 05:58), meu código retorna uma Exception The "id" argument does not exist, dessa forma não executa a migration no Banco de Dados criado.
Links dos prints:
Print do código: https://ibb.co/c6i6y0
Print do erro: https://ibb.co/jpG4kf
Salve, Fabricio!
Tudo bem?
Na classe RunMigrationsTenant aquele debug seu retorna o objeto de Company corretamente?
dd($company);
Ou esse objeto está null (acho que não!).
Ou tem algum erro de implementação no comando criado tenants:migrate
Boa noite,
Acredito que o objeto Company esteja funcionando corretamente, segue print do debug(https://ibb.co/kMH3D0);
A migration também acredito estar ok, pois quando executo direto no terminal ela funciona( print do código https://ibb.co/crFC6L | print da execução https://ibb.co/jJ1kRL);
Também testei uma variação usada na implementação da migration, mas retorna o mesmo erro (print https://ibb.co/kzuTff );
Estou usando a versão 5.5 do Laravel será que pode ser isso? Se for tem uma alternativa para essa versão?
Seu objeto de $company está OK;
O seu TenantMigration está faltando receber o ID.
Na assinatura do comando!
Ou seja, seu comando não está preparado para receber o ID, está incompleto o seu comando...
Segue a classe completa:
namespace App\Console\Commands\Tenant;
use Illuminate\Support\Facades\Artisan;
use App\Models\Company;
use App\Tenant\ManagerTenant;
use Illuminate\Console\Command;
class TenantMigrations extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'tenants:migrations {id?} {--refresh}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Run Migrations Tenants';
private $tenant;
/**
* Create a new command instance.
*
* @return void
*/
public function __construct(ManagerTenant $tenant)
{
parent::__construct();
$this->tenant = $tenant;
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
if ($id = $this->argument('id')) {
$company = Company::find($id);
if ($company)
$this->execCommand($company);
return;
}
$companies = Company::all();
foreach ($companies as $company) {
$this->execCommand($company);
}
}
public function execCommand(Company $company)
{
$command = $this->option('refresh') ? 'migrate:refresh' : 'migrate';
$this->tenant->setConnection($company);
$this->info("Connecting Company {$company->name}");
Artisan::call($command, [
'--force' => true,
'--path' => '/database/migrations/tenant',
]);
$this->info("End Connecting Company {$company->name}");
$this->info('-----------------------------------------');
}
}
Obrigado resolveu !
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!