无法对BLOB和CLOB列执行任何查询(DB2 / PHP / Laravel / Eloquent)

时间:2019-05-23 19:35:20

标签: php laravel eloquent db2

我目前正在开发一个简单的CRUD应用程序,但是遇到BLOB和CLOB的问题。我无法使用此类型的任何列进行任何查询。我不允许丢弃或更改它们。我得到的错误是SQL错误:

  

[IBM] [CLI驱动程序] CLI0005W选件值已更改

。根据我的理解,我会收到此错误,因为驱动程序不了解blob是什么。

我曾尝试将其强制转换为varchar,但它没有雄辩地起作用,但是我的公司希望使用雄辩来完成此任务(因为我已经拥有一个可以在MySQL上正常运行的CRUD API,但其中不包含BLOB或CLOB)。

这种方法效果很好:

$conn = odbc_connect('example','username','password');
        $query = "SELECT cast(BLOB_COLUMN as varchar(32000)) FROM TABLE fetch first 1 row only";
        $stmt = odbc_prepare($conn , $query);
        odbc_execute($stmt);

        while($driver = odbc_fetch_array($stmt)){

            $drivers[] = $driver;

        }
            return $drivers;
    }

但是我不能雄辩地实现这样的事情。我已经尝试过像这样的转换: 型号

protected $casts = [
        'BLOB_COLUMN' => 'string',
        'CLOB_COLUMN' => 'string',
    ];

控制器(allRecords)

public function allRecords() {
        $data = Model::all();

        return $data;
    }

路线:

Route::get('model', 'ModelController@allRecords');

任何帮助将不胜感激。旁注:希望我已经进行了很多详细的解释,因为我在大学里编程才不到一年,而在不到一个月前就开始使用PHP / Laravel。

1 个答案:

答案 0 :(得分:0)

您可以简单地在laravel中使用您的sql查询

Model::select(DB::raw('cast(BLOB_COLUMN as varchar(32000))'))
       ->first();