Как выполнить команду из контроллера и передать ему параметры? ЛАРАВЕЛЬ

#laravel

#laravel

Вопрос:

У меня есть функция контроллера, в которой он вызывает мне команду, в которой я должен передать ему список проектов, которые были назначены для перевода, чтобы он искал меня в другой таблице и регистрировал их как повторяющиеся контакты.

Проблема в том, что я не могу выполнить команду, которая всегда выдает мне ошибку, и я сделал ссылку и ничего.

Это вызывает у меня проблемы, потому что я хочу передать параметры команде.

Контроллер

 public function syncTranslate(Request $request,Project $project){
        $this->authorize('update translate', TranslateProject::class);
        
        $translateWithouthProyect = TranslateProject::filterData()->get();
       
        Artisan::call('fidelizaleads:quotesWithoutProjects',$translateWithouthProyect);
        exit;

return redirect()->route('translate.index')->with(notify()->success($count .' traducciones fueron añadidas al proyecto '. $project->name));

    }
 

Команда

 protected $signature = 'fidelizaleads:quotesWithoutProjects';

 protected $translate;
    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct($translate)
    {
        parent::__construct();
        $this->translate = $translate;
    }

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        Quote::executeQuoteTranslation($this->translate);
        
    }
 

И это сообщение об ошибке, которое он мне выдает

введите описание изображения здесь

Ответ №1:

Я должен был бы догадаться, что вы передаете коллекцию в качестве второго аргумента call . Вам нужно будет запросить эту коллекцию для базового массива:

 Artisan::call('fidelizaleads:quotesWithoutProjects', $translateWithouthProyect->toArray());
 

Вы можете использовать toArray() в коллекции, чтобы получить массив.

Хотя я не уверен, что будет делать передача этого массива, поскольку у вас нет никаких параметров для этой команды, а массив обычно представляет собой ассоциативный массив.

Комментарии:

1. Если это массив объектов, это похоже на SELECT * FROM TRANSLATE, ГДЕ PROJECT_ID РАВНО НУЛЮ; @lagbox

2. что это за объект? поскольку вы не можете передать объект в качестве второго параметра… и ваша команда не принимает параметры

3. Я не знаю, как добавлять параметры к командам, когда я впервые работаю с ними.?

4. laravel.com/docs/8.x/artisan#defining-input-expectations ознакомьтесь с этой частью документов или версией документа, какую бы версию вы ни использовали