Предположим, что у нас есть Laravel по умолчанию User.php модель, и у нас также есть UsersController.php. Вот как создать метод выглядит следующим образом:Метод Laravel Injection - переменная существует?
public function create(User $user)
{
return view('backend.users.form', compact('user'));
}
Как вы можете видеть - пользователя $ пользователю передается в качестве аргумента, и вид backend.users.form получает то $ пользователя.
Если я добавлю dd ($ user); в методе создать:
public function create(User $user)
{
dd($user);
return view('backend.users.form', compact('user'));
}
результат будет:
User {#193 ▼
#fillable: array:3 [▼
0 => "name"
1 => "email"
2 => "password"
]
#hidden: array:2 [▼
0 => "password"
1 => "remember_token"
]
#connection: null
#table: null
#primaryKey: "id"
#perPage: 15
+incrementing: true
+timestamps: true
#attributes: []
#original: []
#relations: []
#visible: []
#appends: []
#guarded: array:1 [▶]
#dates: []
#dateFormat: null
#casts: []
#touches: []
#observables: []
#with: []
#morphClass: null
+exists: false
+wasRecentlyCreated: false
}
Таким образом, переменная (экземпляр) $ пользователь существует, верно?
Но, в представлении backend.users.form, который получает $ пользователю, если мы делаем что-то вроде этого:
<h3>{!! $user->exists ? 'Editing '.$user->name : 'Create New User' !!}</h3>
Результат будет как если $ пользователь не существует ? Результатом будет Создать нового пользователя. Я не понимаю. Можете ли вы объяснить мне, почему $ user-> существует возвращает false когда dd ($ user); показывает, что он существует?
А теперь я вижу, что существует метод Eloquent, и он проверяет, есть ли запись в базе данных ... спасибо! – PeraMika