You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Filament与Sushi扩展时出现Illuminate数据库驱动未找到异常求助

解决Laravel+Filament中Sushi扩展导致的"could not find driver"异常

问题场景

在PHP 8.1.18、Laravel 9.52.10环境下使用Filament框架,运行集成Sushi扩展的Product模型(从第三方API获取并处理产品数据)时,抛出Illuminate Database QueryException异常,提示could not find driver。已确认pdo_mysql扩展启用,普通Eloquent模型功能正常,原示例基于PHP 8.0开发。

解决方案

1. 显式配置Sushi的数据库连接

Sushi默认会复用Laravel默认数据库连接,但它依赖内存表特性,容易与MySQL驱动冲突。需为Sushi单独配置SQLite内存驱动:

  • 在Product模型中指定连接:
use Sushi\Sushi;
use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    use Sushi;

    // 显式指定Sushi专属连接
    protected $connection = 'sushi';

    public function getRows()
    {
        // 第三方API数据获取与处理逻辑
        return $this->fetchAndProcessApiData();
    }
}
  • 在config/database.php的connections数组中添加Sushi配置:
'connections' => [
    // 原有数据库连接...
    'sushi' => [
        'driver' => 'sqlite',
        'database' => ':memory:',
        'prefix' => '',
    ],
],

2. 适配PHP 8.1语法与依赖

原示例基于PHP 8.0,需排查兼容性问题:

  • 检查getRows()方法中的数组解构、属性访问等语法,确保符合PHP 8.1规范
  • 确认API请求依赖(如Guzzle)的版本兼容PHP 8.1,更新composer.json后执行composer update

3. 清除Laravel缓存

缓存的配置可能导致驱动识别异常,执行以下命令清除缓存:

php artisan config:clear
php artisan cache:clear
php artisan view:clear

4. 验证Sushi数据源格式

Sushi要求getRows()返回二维数组结构,可临时打印数据确认格式:

public function getRows()
{
    $data = $this->fetchAndProcessApiData();
    dd($data); // 确认返回值为二维数组
    return $data;
}

内容的提问来源于stack exchange,提问作者Ignacio Olivieri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 12:17:05