Laravel 项目提示:Array to String Conversion的解决办法

在使用基于 Laravel 的项目,比如 Laravel Admin,Laravel Filament 等进行

在使用基于 Laravel 的项目,比如 Laravel Admin,Laravel Filament 等进行开发时,经常会遇到错误提示:Array to String Conversion

这是因为在 Laravel 中,Eloquent 模型的属性默认情况下是以字符串形式存储的。然而,当我们尝试将一个数组(例如 JSON 数据)存储到数据库时,Laravel 会尝试将其转换为字符串,这就会导致 “Array to string conversion” 的错误。

例如,如果数据库中有一个 extra 字段,我们希望将其存储为 JSON 格式的数组,但如果没有正确设置,将导致该错误。

解决方案

为了避免上述错误,我们可以使用 Laravel Eloquent 的 $casts 属性来显式地将数据库字段类型指定为数组。

下面是示例代码:

<?php
 
namespace AppModels;
 
use DcatAdminTraitsHasDateTimeFormatter;
use IlluminateDatabaseEloquentModel;
 
class Order extends Model
{
    use HasDateTimeFormatter;
 
    // 指定对应的数据库表名
    protected $table = 'orders';
 
    // 使用 $casts 属性将 resource_detailed 字段转换为数组
    protected $casts = [
        // 将 extra 字段强制转换为数组
        'extra' => 'array',
    ];
}