5 php arrays object laravel laravel-5
有一段时间我尝试使用数组而不是集合,就像 Laravel 那样。
我尝试过这种方法,但没有成功:
Event::listen(StatementPrepared::class, function ($event) {
$event->statement->setFetchMode(...);
});
Run Code Online (Sandbox Code Playgroud)
正如在https://laravel.com/docs/5.4/upgrade#upgrade-5.4.0 上解释的那样,但它不起作用......
我也尝试这样做:
DB::table('users')->where([...])->take(1)->get()->toArray();
Run Code Online (Sandbox Code Playgroud)
但它正在做:
Array ( [0] => stdClass Object ( [uid] => 1 [...]) )
Run Code Online (Sandbox Code Playgroud)
我知道论坛上有更多关于它的信息,但它们都已经过时了。
谢谢
toArray正在将对象集合更改为对象数组,就像它应该做的那样。如果你希望集合中的对象也是数组,则需要首先对每个对象进行转换:
$collection = DB::table('users')->where([...])->take(1)->get();
$array = $collection->map(function($obj){
return (array) $obj;
})->toArray();
Run Code Online (Sandbox Code Playgroud)
要在整个应用程序中使用此功能,您可以在boot服务提供商之一的方法中添加一个集合宏:
Collection::macro('toArrays', function () {
return $this->map(function ($value) {
return (array) $value;
})->toArray();
});
Run Code Online (Sandbox Code Playgroud)
这位于服务提供商文件的顶部:
use Illuminate\Support\Collection;
Run Code Online (Sandbox Code Playgroud)
然后,在任何获得一组数据库结果的地方,您都可以调用toArrays它:
DB::table('users')->where([...])->get()->toArrays();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6242 次 |
| 最近记录: |