gpt4 book ai didi

php - Laravel 4 - 在运行时设置 database.fetch 配置

转载 作者:可可西里 更新时间:2023-11-01 13:35:45 25 4
gpt4 key购买 nike

在 Laravel 3 中,我可以在运行时设置数据库“获取”配置(以数组而不是对象的形式获取结果):

Config::set('database.fetch', PDO::FETCH_ASSOC);

在 Laravel 4 中,结果仍然作为对象返回。

我做错了什么?

[编辑 - 额外细节]

我决定测试是否设置了配置,并在 Laravel 3 和 Laravel 4 中并排尝试相同的代码段。

//first fetch as object
Config::set('database.fetch', PDO::FETCH_CLASS);
//Laravel 3 and 4 returns 88 ... expected:
echo PDO::FETCH_CLASS.Config::get('database.fetch');
$users = $users = DB::table('users')->get();
//Laravel 3 and 4 both return an array of objects(stdClass) ... expected
var_dump($users);

//then fetch as array
Config::set('database.fetch', PDO::FETCH_ASSOC);
//Laravel 3 and 4 returns 22 ... expected:
echo PDO::FETCH_ASSOC.Config::get('database.fetch');
$users = $users = DB::table('users')->get();
//Laravel 3 returns an array of arrays ... expected
//Laravel 4 returns an array of objects(stdClass) ... UNEXPECTED!
var_dump($users);

最佳答案

TL;DR:不要将配置用于运行时更改

配置集初始化时的获取模式。这通常适用于所有 Illuminate 库。

如果您需要在运行时更改获取模式,您需要在您的连接对象上而不是在配置中设置它。

幸运的是,我们可以访问连接对象。

注意 Connection 对象有一个 setFetchMode()方法。

直接使用连接对象

这意味着在您的代码中您可以 get your connection然后在查询数据库之前用它运行 setFetchMode(PDO::FETCH_ASSOC)

// With Query Builder
$query = DB::connection()->setFetchMode(PDO::FETCH_ASSOC);

// With Eloquent model
$user = new User;
$user->getConnection()->setFetchMode(PDO::FETCH_ASSOC);

关于php - Laravel 4 - 在运行时设置 database.fetch 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19360931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com