【发布时间】:2014-09-05 23:38:35
【问题描述】:
在 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);
【问题讨论】:
-
为什么不能修改 app/config/database.php 并在那里调整 fetch 样式?
-
因为我只需要为我的应用程序中的某些方法动态更改设置(少数方法需要返回数组,但大多数应用程序需要返回对象)。
-
@MMacdonald 在那种情况下, toArray() 不是你想要的吗? laravel.com/docs/eloquent#collections
-
不是 toArray() 仅适用于 Eloquent 吗?这些方法仅使用查询生成器。在 Laravel 3 中可以动态设置 fetch。
-
如果从
config/database.php文件中设置会得到什么,检查一下。