【问题标题】:Codeigniter 4 Seeder gives an error, "Array to string conversion"Codeigniter 4 Seeder 给出错误,“数组到字符串的转换”
【发布时间】:2022-01-25 17:38:38
【问题描述】:

当我添加dh_setting_context' => 'user1' 时,我收到Array to string conversion 的错误,但是,当我从播种机中删除该行时,它可以正常工作并且表格已正确填充。为什么dh_setting_context' => 'user1' 生成器会出错,请问如何解决?

这是我的种子文件

namespace App\Database\Seeds;
use CodeIgniter\Database\Seeder;
use \CodeIgniter\I18n\Time;

class DhSettingSeeder extends Seeder
{

public function run()
{
    $data = [
        
        // app - General App Settings
        [
            'dh_setting_key'            => 'app.dh_company_name' ,
            'dh_setting_value'          => 'ABC Big Co., Ltd',
            'dh_setting_created_at'     => Time::now(),
            'dh_setting_updated_at'     => Time::now()
        ],
        
        [
            'dh_setting_key'            => 'app.dh_company_address_line_1' ,
            'dh_setting_value'          => '123 Long Street',
            'dh_setting_created_at'     => Time::now(),
            'dh_setting_updated_at'     => Time::now()
        ],
        
        
        // email - general settings for email
        [
            'dh_setting_key'            => 'email.fromEmail' ,
            'dh_setting_value'          => 'example@yahoo.com',
            'dh_setting_created_at'     => Time::now(),
            'dh_setting_updated_at'     => Time::now()
        ],
        [
            'dh_setting_key'            => 'email.SMTPHost' ,
            'dh_setting_value'          => 'smtp.mail.yahoo.com',
            'dh_setting_created_at'     => Time::now(),
            'dh_setting_updated_at'     => Time::now()
        ],
        // add some user settings for admin user (user id = 1)
        [
            'dh_setting_key'            => 'user.timezone' ,
            'dh_setting_value'          => 'gmt',
            'dh_setting_context'        => 'user1',
            'dh_setting_created_at'     => Time::now(),
            'dh_setting_updated_at'     => Time::now()
        ]
    ];
    $this->db->table('dh_setting')->insertBatch($data);
}
}

这是我的表的结构

【问题讨论】:

  • 完整的错误信息是什么?您在哪一行代码(控制器/模型/视图)中得到错误?请使用这些详细信息编辑您的问题,谢谢

标签: php codeigniter codeigniter-4


【解决方案1】:

并非$data 中的所有条目都具有相同的键。

CodeIgniter 从第一个条目('dh_setting_key''dh_setting_value''dh_setting_created_at''dh_setting_updated_at')中获取密钥,并使用这些密钥检查$data 中的所有条目。

如果条目的键相同,它会创建一个包含条目值的字符串。

如果条目的键不同,则创建一个空数组。

对于 INSERT 查询,CodeIgniter 然后尝试将值字符串与空数组连接起来,这是不允许的并给出错误。

要修复,请将'dh_setting_context' => null, 添加到其他条目。

【讨论】:

    猜你喜欢
    • 2012-12-02
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多