【问题标题】:Laravel 5.3 - how do I set fetchmode in query builder?Laravel 5.3 - 如何在查询生成器中设置 fetchmode?
【发布时间】:2017-03-31 22:11:08
【问题描述】:

我正在使用遗留代码。旧的报表引擎使用关联数组,Laravel 的查询构造器返回一个对象数组。

我需要将对象转换为数组。我试过使用:

\DB::connection('tars-test') //->setFetchMode(PDO::FETCH_ASSOC)

但这让我Class 'App\Http\Controllers\PDO' not found

建议将->all() 放在查询末尾,但会引发错误Call to a member function all() on array

最有效的方法是在运行时为旧版函数设置 fetchmode,并且仅为旧版函数设置。我该怎么做?

【问题讨论】:

    标签: laravel laravel-5 laravel-5.3 laravel-query-builder


    【解决方案1】:

    您可以使用 'toArray' 方法: https://laravel.com/docs/5.3/collections#method-toarray

    【讨论】:

    • 不起作用。查询构建器的返回是一个(对象的)数组,因此对其调用 toArray 只会引发错误。
    【解决方案2】:

    Laravel 5.3 及更低版本

    你走对了,但你可以看到 laravel 试图在 App\Http\Controllers\PDO 中找到 PDO,这可能意味着你忘记添加 use Illuminate\Database\PDO;

    Laravel 5.4 及更高版本

    从 laravel 5.4 开始,这不是一个选项。但是你仍然可以全局设置获取模式:Laravel 5.4 - How to set PDO Fetch Mode?

    或者,如果您仍希望仅在本地进行更改:

    Return values only (no keys/associative array) in Laravel

    【讨论】:

      猜你喜欢
      • 2017-10-26
      • 2016-12-31
      • 2017-06-24
      • 2016-11-16
      • 1970-01-01
      • 2016-11-11
      • 2017-03-29
      • 2017-04-24
      相关资源
      最近更新 更多