在 laravel 中,如何将多维数组作为 artisan 命令的选项传递?

Posted

技术标签:

【中文标题】在 laravel 中,如何将多维数组作为 artisan 命令的选项传递?【英文标题】:In laravel, how can i pass a multidimensional array as an option for artisan command? 【发布时间】:2019-10-22 23:28:49 【问题描述】:

我正在尝试在 cmd 中运行 laravel 命令“php artisan set:fields”。 如何在命令中传递数组??

namespace App\Console\Commands\Scripts;

use Illuminate\Console\Command;
use App\User;

class SetFields extends Command 

   protected $signature = 'set:fields user_id --data_array=*';
   protected $description = '';

   public function __construct() 
      parent::__construct();
   

   public function handle() 

       $user_id = $this->argument('user_id');
       $metafield_array = $this->option('data_array');
       ....
       code_is_here
   
 

我有一个数组

$data = [
         ["key"=>"key1","value"=>1],
         ["key"=>"key2","value"=>2], 
         ["key"=>"key3","value"=>3]
        ];

Artisan::call('set:fields', [
        'user_id' => 1,
        '--data_array' => $data
    ]);

它正在工作。 但是我想在cmd中运行这个命令,如何在命令中传递一个数组?

【问题讨论】:

也许json编码数组,在命令行中传递json字符串解码回数组? 它抛出一个错误'参数太多,预期参数“command”“user_id”“data_array”'。这可能是由于编码数组中有许多特殊字符而发生的。 我只是对数组进行编码,然后对其进行 base64 编码,另一方对其进行解码。这是工作????????? 【参考方案1】:

根据RavindraPatel 在comment 中的自我回答

我只是对数组进行编码,然后对其进行 base64 编码,然后另一方对其进行解码。这是工作?? – Ravindra Patel

【讨论】:

以上是关于在 laravel 中,如何将多维数组作为 artisan 命令的选项传递?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel/PHP 中创建多维数组

如何将多维数组转换为Laravel中的集合

如何在 Laravel 测试中发布多维数组?

Laravel + Vue - 将多维 PHP 数组传递给 vue 组件

在 laravel 中导出 excel 或 csv 中的多维数组

Laravel 5.7 中的 php 多维数组循环问题