2016-03-07 6 views
0

Предположим, что у нас есть 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); показывает, что он существует?

ответ

3

Не зная конфигурацию вашего DI-контейнера, экземпляр User, который вы вводите, вероятно, не существует в качестве записи в базе данных - он не имеет идентификатора. Это просто пример модели, который вы можете использовать.

+0

А теперь я вижу, что существует метод Eloquent, и он проверяет, есть ли запись в базе данных ... спасибо! – PeraMika

1

Можете ли вы объяснить мне, почему $ user-> exists возвращает false, когда dd ($ user); показывает, что он существует?

Пожалуйста, посмотрите внимательно на результат dd() внутри контроллера:

... 
+exists: false 
... 

$user->existsfalse является здесь, так что он будет возвращать false в любом случае.

+0

А теперь я вижу, что существует метод Eloquent, и он проверяет, есть ли запись в базе данных ... спасибо! – PeraMika

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