Laravel: свойство [имя] не существует в этом экземпляре коллекции - PullRequest
2 голосов
/ 29 июня 2019

Я пытаюсь получить некоторые данные из моей таблицы пользователей, для моей страницы профиля.Но когда я щелкаю страницу профиля, появляется сообщение об ошибке:

Свойство [имя] не существует в этом экземпляре коллекции.

В чем проблема?я делаю это неправильно или какой-то код отсутствует?

Модель пользователя

protected $fillable = [
    'name', 'email', 'password', 'nim', 'phone_number', 'department'
];

protected $hidden = [
    'password', 'remember_token',
];

public function dropcv(){
    return $this->hasMany('App\Dropcv');
}

public function registration(){
    return $this->hasMany('App\Registration');
}

Контроллер

public function index()
{
    $users = User::all();
    return view('users.profile')->with('users',$users);
}

public function show($id)
{
    $users = User::find($id);
    return view('users.profile')->with('users',$users);
}

Просмотр

<h3>{{$users->name}}</h3>

В разделе просмотра я просто делаю несколько тестов для извлечения простых данных из таблицы пользователей.

Я так расстроен, что нашел решение своей проблемы.Я искал и пробовал так много решений в сети, но ничего не помогало. Я новичок в Laravel и действительно ценю некоторую помощь.

Ответы [ 4 ]

3 голосов
/ 29 июня 2019

использовать для контроллера

public function show($id){
$users = User::find($id);
return view('users.profile',compact('users'));
}

использовать для просмотра страницы

<h3>$users->name</h3>

использовать для контроллера

public function index(){
$users = User::all();
return view('users.profile',compact('users'));
}

Вы пытаетесь получить доступ к свойству в массиве, который не является правильным Вы должны сначала войти, затем получить доступ к своей собственности

@foreach($users as $user)
<h3>{{ $user->name }}</h3>
@endforeach
0 голосов
/ 29 июня 2019

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

0 голосов
/ 29 июня 2019

используйте это:

public function index()
{
    $users = User::get();
    return view('users.profile')->with('users',$users);
}

и для этого контроллера вы должны использовать @foreach в blade-файле для отображения списка пользователей, например:

@foreach($users as $user)
    <h3>{{$user->name}}</h3>
@endforeach

и для функции ниже:

public function show($id)
{
    $user = User::where('id', $id)->first();
    return view('users.profile')->with('user',$user);
}

и для этого вида:

<h3>{{$user->name}}</h3>
0 голосов
/ 29 июня 2019

Вы пытаетесь получить доступ к свойству в массиве, который является неправильным
сначала вам нужно foreach, а затем получить доступ к свойству

@foreach($users as $user)
    <h3>{{ $user->name }}</h3>
@endforeach

Редактировать
Когдавы используете user::all или user::get(), что эквивалентно синтаксису select * from users sql, и laravel даст вам экземпляр collection вместо массива, поэтому при вызове user::all() вы получите экземпляр коллекции, имеющий массив user экземпляр в нем, вот пример для этого

Collection {#332 ▼
  #items: array:3 [▼
    0 => User {#333 ▶}
    1 => User {#334 ▶}
    2 => User {#335 ▶}
  ]
}

для получения дополнительной информации, пожалуйста, прочитайте Коллекция Laravel

...