2013-12-25 2 views
12

После того как я пишу:Как отобразить читаемый массив - Laravel

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

И после того, как я обновить браузер я получаю нечитаемый массив. Есть ли способ получить этот массив в читаемом формате?

+0

Окружите ваш выходной массив с '

ARRAY_DUMP_CODE
' тегами –

+0

D (Пользователь :: все()); –

ответ

19

dd() сбрасывает переменный и завершает выполнение сценария (1), поэтому окружающий его <pre> тегов оставит его сломанным. Просто используйте старый добрый var_dump() (или print_r(), если вы знаете, что это массив)

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

Update:

Я думаю, вы могли бы форматировать вниз, что показано при наличии 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) Для записи, это осуществление (дд):

function dd() 
{ 
    array_map(function($x) { var_dump($x); }, func_get_args()); die; 
} 
+1

Это дает действительно читаемый массив :) Еще одна проблема заключается в том, что он дает очень большой массив, а информация, которая мне нужна, находится внизу страницы. – Gilko

+0

Ну, какая информация вы хотите? Вы можете сбрасывать другие методы, чтобы отфильтровать до того, что вам действительно нужно. User :: all() возвращает весь объект действительно –

+0

Я просто хочу массив объекта User. Я дал это по-своему: User :: find (6) -> где ('person_id' == 1), и страница дает мне массив, который начинается с объекта «Illuminate \ Database \ Eloquent \ Builder» (... " Мне нужно прокрутить весь путь вниз, чтобы получить массив объекта User. – Gilko

15

на самом деле гораздо более простой способ, чтобы получить читаемый массив, что вы (вероятно) хотят видеть, это вместо того, чтобы использовать

dd($users); 

или

dd(User::all()); 

использовать этот

dd($users->toArray()); 

или

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

который намного приятнее отлаживать.

EDIT - дополнительный, это также хорошо работает в ваших мнений/шаблонов , так что если вы передаете получить все пользователи в шаблон, вы можете сбросить его в шаблон лезвия

{{ dd($users->toArray()) }} 
+2

Это правильный (и лучший) способ сделать это в Laravel. – Lulu

0

Вы можете использовать этот код на view.blade. {{var_dump ($ Animales)}}

+0

Объясните, что вы предлагаете с чуть-чуть подробнее.detail – dbmitch

0

Вы можете использовать var_dump или print_r функции на лопатку themplate с помощью функции контроллера:

class myController{ 

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

и использовать лезвие themplate:

$myController->myprint($users); 
1

Для всех все еще ищущий хороший способ добиться этого, рекомендуемым способом является функция dump() от symfony/var-dumper.

Он добавлен в документацию с версии 5.2: https://laravel.com/docs/5.2/helpers#method-dd

+0

Должен быть ответ – SuperKiwi

Смежные вопросы