26

在我写完之后:

Route::get('/', function()
{
    dd(User::all());
});

刷新浏览器后,我得到一个不可读的数组。有没有办法以可读格式获取该数组?

4

9 回答 9

39

dd()转储变量并结束脚本(1)的执行,因此用<pre>标签包围它会使其损坏。只需使用好的 ol' var_dump()(或者print_r()如果你知道它是一个数组)

Route::get('/', function()
{
    echo '<pre>';
    var_dump(User::all());
    echo '</pre>';
    //exit;  <--if you want
});

更新:

我认为您可以通过让 Laravel 将模型对象转换为数组来格式化显示的内容:

Route::get('/', function()
{
    echo '<pre>';
    $user = User::where('person_id', '=', 1);
    var_dump($user->toArray()); // <---- or toJson()
    echo '</pre>';
    //exit;  <--if you want
});

(1) 作为记录,这是 dd() 的实现:

function dd()
{
    array_map(function($x) { var_dump($x); }, func_get_args()); die;
}
于 2013-12-25T09:43:37.170 回答
27

实际上,获得您(可能)想要看到的可读数组的一种更简单的方法是,而不是使用

dd($users); 

或者

dd(User::all());

用这个

dd($users->toArray());

或者

 dd(User::all()->toArray());

调试起来要好得多。

编辑 - 另外,这在您的视图/模板中也可以很好地工作,因此如果您将 get all users 传递给您的模板,您可以将其转储到您的刀片模板中

{{ dd($users->toArray()) }}
于 2014-01-03T14:03:58.807 回答
3

也许尝试 kint:composer require raveren/kint "dev-master" 更多信息:为什么我的调试数据未格式化?

于 2014-09-19T13:06:43.693 回答
2

对于仍在寻找实现此目的的好方法的每个人,推荐的方法是dump()函数 from symfony/var-dumper

它从 5.2 版开始添加到文档中: https ://laravel.com/docs/5.2/helpers#method-dd

于 2017-04-08T10:54:01.340 回答
1

您可以在 view.blade 上使用此代码。{{var_dump($animales)}}

于 2016-06-25T17:28:16.103 回答
0

您可以通过控制器功能在 Blade 模板上使用var_dump或功能:print_r

class myController{

   public function showView(){
     return view('myView',["myController"=>$this]);
   }
   public function myprint($obj){
     echo "<pre>";
     print_r($obj);
     echo "</pre>";
   }
}

并使用您的刀片模板:

$myController->myprint($users);
于 2016-07-07T21:41:01.773 回答
0

da()在 Laravel 中添加了一个助手,它实际上是dd($object->toArray())

这是要点:https ://gist.github.com/TommyZG/0505eb331f240a6324b0527bc588769c

于 2017-10-03T18:29:58.280 回答
0

如建议的那样,您可以使用“死和转储”,例如

dd($var)

或仅使用“转储”,而不会死,

dump($var)

于 2020-05-22T10:52:06.197 回答
0

奇怪的是,没有人向 Symfony VarDumper 指出,只需这样做:

\Symfony\Component\VarDumper\VarDumper::dump($data);
于 2021-09-16T19:50:52.400 回答