laravel 种子内的函数调用未定义的函数Termwind\ValueObjects\mb_trimwidth()

uhry853o  于 2023-02-10  发布在  其他
关注(0)|答案(2)|浏览(262)

我有一个项目,我有一个“习惯”表,这个表需要一个播种机给予它数据,简单地说,它是一个原始数据的播种机,我需要烹饪它,换句话说,我需要像这样处理它...

public function run()
{
    $Habits = [
        '🙂Good' => ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'],
        '😐Neutral' => ['k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 't'],
        '☹️Bad' => ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'],
    ];
        
    foreach ($habits as $habit_category => $names) {
        foreach ($names as $name) {
            DB::table('habits')->insert([
                'name' => $name,
                'category' => $habit_category
            ]);
        }
    }
}

这是数据库播种器

public function run()
{
    $this->call([
        HabitsSeeder::class,
    ]);
}

我知道逻辑是没有缺陷的,但idk如果我这样做是正确的,但无论如何,给出的错误是在标题:
“调用未定义的函数Termwind\ValueObjects\mb_trimwidth()”

a11xaf1n

a11xaf1n1#

这个错误消息可能与您的seeder无关。您使用的是nunomaduro/termwind包,它很可能在服务提供商内部引用。
当您调用db:seed之类的任何artisan命令时,这些服务提供程序将被启动,其中的任何错误都将阻止seeder甚至无法运行。
软件包调用ValueObjects命名空间中mb_strimwidth的唯一位置是在以下文件中:
https://github.com/nunomaduro/termwind/blob/8ab0b32c8caa4a2e09700ea32925441385e4a5dc/src/ValueObjects/Styles.php#L1053
真正的根本问题是你缺少了mbstring PHP扩展,所以当Termwind包引用一个mb_*方法时,它在全局名称空间中找不到那个方法,而是检查包的名称空间,也找不到它,并抛出一个错误。
看一看the PHP docs,了解如何在系统中安装mbstring包。
调试此类问题的技巧是查看整个错误消息堆栈跟踪而不仅仅是最新消息。您将能够向后工作,查看调用此方法的位置以及触发它的原因。

cbjzeqam

cbjzeqam2#

尝试以下选项,

  • 您可以通过安装mbstring扩展来解决此问题。
如果您有XAMPP,请尝试以下操作:
  • 配置文件 * → php ini * →查找***;扩展名= mbstring***→删除分号(;)
如果您使用的是MAC操作系统,

sudo端口安装php80-mbstring

如果您的系统基于Linux,

下载安装程序php8.1-mbstring
安装完扩展后,您需要重新启动PHP服务器。
服务httpd重新启动
如果您有任何疑问,请参考此博客,https://sebhastian.com/mbstring-missing-php/
或者您可以简单地选择PHP文档https://www.php.net/manual/en/mbstring.installation.php

相关问题