从laravel命令选项获取ID

qfe3c7zg  于 2023-02-05  发布在  其他
关注(0)|答案(1)|浏览(149)

我正在创建一个laravel命令,我想列出所有的类别,然后一旦我选择了一个类别,我想得到的ID,但问题是,类别可以有重复的名称,所以我不能找到ID使用的名称。
下面是我的代码

$categories = Category::pluck('name', 'id')->toArray();
    $category = $this->choice('Select category.', $categories);

这给了我如下所示的选项

[1] Category 1
    [2] Category 2
    [3] Category 3
    [4] Category 4

当我选择一个类别时,我只得到名称,而不能得到ID。

sdnqo3pr

sdnqo3pr1#

Laravel插入响应并返回文本。如果你想返回id,你应该自己设置验证器。

use Symfony\Component\Console\Question\ChoiceQuestion;

$question = 'Select the category:';

$choices = [
    1 => 'Category 1',
    2 => 'Category 2',
    3 => 'Category 3',
    4 => 'Category 4',
];

$question = new ChoiceQuestion($question, $choices);
$question->setValidator(function($res)
{
    // here is where laravel interpolates things, but we will only return the selected choice id.
    return $res;
});

$id = $this->output->askQuestion($question);

$text = $choices[$id];

相关问题