-2

Symfony 5のコンソールのコマンドに問題があります。データベースと実行クエリに接続したいので

、コンストラクターのコマンド ( TerytWMRODZRepository $terytwmrodzrepo ) で 1 つのパラメーターを渡そうとします。これを行う 1 つの方法は、エンティティにリポジトリを作成することです。私はこれを行いました。しかし、コンストラクターのコマンドにパラメーターを入れると、エラーが発生します。

以下は、このコンソールのコマンドのコードです。

# src/Command/GetNewDataTerytCommand.php
# ...
<?php

namespace App\Command;

use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Httpfoundation\Response;
use App\TERYT_SoapClient;
use App\Service\DB\TerytDB;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Console\Command\LockableTrait;
use App\Repository\TerytWMRODZRepository;

class GetNewDataTerytCommand extends Command
{
    protected static $wsdl = 'https://uslugaterytws1test.stat.gov.pl/wsdl/terytws1.wsdl';

    private $terytwmrodzrepo;

    protected static $defaultName = 'teryt:get';

    public function __construct(TerytWMRODZRepository $terytwmrodzrepo){

        $this->terytwmrodzrepo= $terytwmrodzrepo;

        parent::__construct();
    }
    ...
}

ターミナルでコンソールのコマンド'php bin/console teryt:get'を使用すると、次のような出力が得られます。


ArgumentCountError {#67

  #message: "Too few arguments to function App\Command\GetNewDataTerytCommand::__construct(), 0 passed in /var/www/html/umowy_uzytkownicy/bin/console on line 43 and exactly 1 expected"<br />
  #code: 0<br />
  #file: "./src/Command/GetNewDataTerytCommand.php"<br />
  #line: 27<br />
  trace: {<br />
    ./src/Command/GetNewDataTerytCommand.php:27 {<br />
      App\Command\GetNewDataTerytCommand->__construct(TerytWMRODZRepository $terytwmrodzrepo)<br />
      › <br />
      › public function __construct(TerytWMRODZRepository $terytwmrodzrepo){<br />
      › <br />
    }<br />
    ./bin/console:43 { …}<br />
  }<br />
}<br /><br />

URLのドキュメントのSymfony 5で解決策を見つけようとしました: https://symfony.com/doc/current/console/commands_as_services.htmlおよび次のような他のページ: https://ourcodeworld.com/articles/read/1131/how-to -access-the-entity-manager-doctrine-inside-a-command-in-symfony-5 ですが、何も機能していません。 config/service.yamlでコンソールのコマンドをサービスとして構成

しようとしましたが、何も変わりませんでした:

# config/services.yaml
# ...
services:
    ...
    App\Command\GetNewDataTerytCommand:
        public: true
        tags:
           - { name: 'console.command', command: 'teryt:get'}

PS: 私の英語で申し訳ありません。これは、StackOverFlow での最初の質問です。

どうもありがとうございました

4

1 に答える 1