Я возвращаю значение из переменной в моем контроллере, но оно дает разные результаты, когда я 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;
}
dd($roles)
выплюнет сам объект, как видно во втором наборе выходных данных.
{{ $roles }}
собирается выплюнуть объект, пройденный через его toJson()
функция, в результате чего ваш первый набор вывода.
в этом коде
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 говорит, что указанная функция отображает структурированную информацию об одном или нескольких выражениях, которая включает его тип и значение.
Мне просто интересно. Если вы только что получили столбец ‘role’ с помощью функции: with (‘role’). Почему в результате выполнения функции dd () появилась другая информация?