播种器内的函数调用未定义的函数 Termwind\ValueObjects\mb_strimwidth()

Evi*_*inn 2 laravel laravel-seeding laravel-9

我有一个项目,我有一个“习惯”表,该表需要一个播种器来为其提供数据,简单地说,它是一个带有原始数据的播种器,我需要烹饪它,换句话说,我需要处理就像这样...

\n
public function run()\n{\n    $Habits = [\n        \'Good\' => [\'A\', \'B\', \'C\', \'D\', \'E\', \'F\', \'G\', \'H\', \'I\', \'J\'],\n        \'Neutral\' => [\'k\', \'l\', \'m\', \'n\', \'o\', \'p\', \'q\', \'r\', \'t\'],\n        \'\xe2\x98\xb9\xef\xb8\x8fBad\' => [\'1\', \'2\', \'3\', \'4\', \'5\', \'6\', \'7\', \'8\', \'9\', \'10\'],\n    ];\n        \n    foreach ($habits as $habit_category => $names) {\n        foreach ($names as $name) {\n            DB::table(\'habits\')->insert([\n                \'name\' => $name,\n                \'category\' => $habit_category\n            ]);\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

这是数据库播种器

\n
public function run()\n{\n    $this->call([\n        HabitsSeeder::class,\n    ]);\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我知道逻辑没有缺陷,但我不知道我是否做得正确,但无论如何,给出的错误在标题中:

\n
\n

“调用未定义的函数 Termwind\\ValueObjects\\mb_strimwidth()”

\n
\n

and*_*ber 6

该错误消息可能与您的播种机无关。您正在使用该nunomaduro/termwind包,该包很可能在服务提供商内部被引用。

当您调用任何 artisan 命令时,例如db:seed,这些服务提供程序将被启动,其中的任何错误都会阻止播种器运行。

mb_strimwidth包调用ValueObjects 命名空间内部的唯一位置是在这个文件中:

https://github.com/nunomaduro/termwind/blob/8ab0b32c8caa4a2e09700ea32925441385e4a5dc/src/ValueObjects/Styles.php#L1053

实际上,根本问题是您缺少mbstringPHP 扩展。因此,当 Termwind 包引用一个mb_*方法时,它无法在全局命名空间中找到该方法,而是检查包的命名空间,也找不到它,并引发错误。

查看PHP 文档,了解如何mbstring在系统中安装该软件包。

调试此类未来问题的提示是查看整个错误消息堆栈跟踪,而不仅仅是最新消息。您将能够向后工作并查看在何处调用此方法以及触发它的原因。