Laravel — странное поведение. Данные контроллера и данные Blade

Я возвращаю значение из переменной в моем контроллере, но оно дает разные результаты, когда я dd ($ role) в моем блэйд-представлении.

public function index()
{
$users = $this->user->getAll(); //DBUserRepository
$roles = $this->user->getRoles($users)
return $roles;
}

Дает правильные результаты

{
id: "1",
username: "Muzikman",
email: "[email protected]",
password: "$2y$10$Sp7k9Fs0DwFSYHTpWrTWquFmXJpkiKfRIHsjYtdEXTvbdOJwv9AtG",
password_confirmation: "",
confirmation_code: "91f0583ed76c95ebf378648d65d0eac7",
remember_token: "bGmdTchXtilBj41FIazkFS3PDZzr1tVKmTFnMkeeSoD7wpW6hoQ07A42plle",
confirmed: "1",
created_at: "2014-10-19 12:17:55",
updated_at: "2014-10-20 15:07:01",
roles: [
{
id: "12",
name: "Members",
created_at: "2014-10-24 20:45:26",
updated_at: "2014-10-24 20:45:26",
}
]

Однако при возврате $ role из контроллера в blade-сервер это приводит к другим результатам.

public function index() { $users = $this->user->getAll(); $roles = $this->user->getRoles($users);
return View::view('admin.index', compact('users'))->withRoles($roles); }

Blade var dump {{dd ($ role)}} возвращает

array (size=2)
0 =>
object(User)[254]
protected 'connection' => null
protected 'table' => null
protected 'primaryKey' => string 'id' (length=2)
protected 'perPage' => int 15
public 'incrementing' => boolean true
public 'timestamps' => boolean true
protected 'attributes' =>
array (size=10)
'id' => string '1' (length=1)
'username' => string 'Muzikman' (length=8)
'email' => string '[email protected]' (length=22)
'password' => string '$2y$10$Sp7k9Fs0DwFSYHTpWrTWquFmXJpkiKfRIHsjYtdEXTvbdOJwv9AtG'
'password_confirmation' => string '' (length=0)
'confirmation_code' => string '91f0583ed76c95ebf378648d65d0eac7' (length=32)
'remember_token' => string 'bGmdTchXtilBj41FIazkFS3PDZzr1tVKmTFnMkeeSoD7wpW6hoQ07A42plle' (
'confirmed' => string '1' (length=1)
'created_at' => string '2014-10-19 12:17:55' (length=19)
'updated_at' => string '2014-10-20 15:07:01' (length=19)
protected 'original' =>
array (size=10)
'id' => string '1' (length=1)
'username' => string 'Muzikman' (length=8)
'email' => string '[email protected]' (length=22)
'password' => string '$2y$10$Sp7k9Fs0DwFSYHTpWrTWquFmXJpkiKfRIHsjYtdEXTvbdOJwv9AtG'
'password_confirmation' => string '' (length=0)
'confirmation_code' => string '91f0583ed76c95ebf378648d65d0eac7' (length=32)
'remember_token' => string 'bGmdTchXtilBj41FIazkFS3PDZzr1tVKmTFnMkeeSoD7wpW6hoQ07A42plle' (length=60)
'confirmed' => string '1' (length=1)
'created_at' => string '2014-10-19 12:17:55' (length=19)
'updated_at' => string '2014-10-20 15:07:01' (length=19)
protected 'relations' =>
array (size=1)

Может кто-нибудь объяснить, что здесь происходит? Отправка одного и того же объекта данных на блейд из контроллера с другим содержимым массива.

Вот код из моего интерфейса:

public function getRoles($users)
{

foreach($users as $user){
$roles[] = \User::with('roles')->find($user->id);
}

return $roles;
}

0

Решение

dd($roles) выплюнет сам объект, как видно во втором наборе выходных данных.

{{ $roles }} собирается выплюнуть объект, пройденный через его toJson() функция, в результате чего ваш первый набор вывода.

0

Другие решения

в этом коде

public function index()
{
$users = $this->user->getAll(); //DBUserRepository
$roles = $this->user->getRoles($users)
return $roles;
}

вы не сбросили его, вы возвращаете $ role, я думаю, когда вы возвращаете что-то, и содержимое «JSONable», laravel установит соответствующий заголовок и преобразует содержимое в JSON. (находится в разделе «Подсветка \ Http \ Response»)

в то время как другой

{{ dd($roles) }}

то же самое с

<?php var_dump($roles); ?>

который в PHP говорит, что указанная функция отображает структурированную информацию об одном или нескольких выражениях, которая включает его тип и значение.

0

Мне просто интересно. Если вы только что получили столбец ‘role’ с помощью функции: with (‘role’). Почему в результате выполнения функции dd () появилась другая информация?

0
По вопросам рекламы [email protected]