Как получить имя из красноречивых классов моделей на мой взгляд

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

«Попытка получить имя свойства не-объекта (Просмотр: /var/www/html/laravel/imarker/resources/views/student/exams/available.blade.php)»

@foreach($availableExams as $exam)
     @foreach($exam->user as $user)
           {{($user->name)}}
     @endforeach
    @endforeach

Модель экзамена

 public function user(){
    return $this->belongsTo('App\User');
}

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

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

Контроллер

public function availableExams(){
    $users = User::all();
    $availableExams = Exam::all();
    return 
view('student/exams/available',compact('availableExams', 'users'));
   }

когда я dd($user) он возвращает истинный вместо имени. какое может быть имя?

Timothy Mach 06.04.2019 08:21

да, потому что пользовательский метод имеет отношения, поэтому он возвращает только одну запись, попробуйте dd $exam->user в поле зрения, и вы получите представление.

Maulik Shah 06.04.2019 08:30

зачем использовать два foreach? Если каждый экзамен принадлежит одному пользователю, вам нужен один foreach в поле зрения..{{$exam->user->name }}

Mohammad Hosseini 06.04.2019 08:32
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
3
165
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

У каждого Exam есть один User, и у этого User есть имя? Попробуй это:

@foreach($availableExams as $exam)
    {{$exam->user->name }}
@endforeach

это безумие. когда я {{dd($exam->user->name) }} я получаю имя, но как только я использую {{$exam->user->name}} я получаю ту же ошибку Попытка получить имя свойства не-объекта (Просмотр:...

Timothy Mach 06.04.2019 08:37

@TimothyMach, когда вы используете dd($exam->user->name), что такое дамп? скопируйте, пожалуйста

Mohammad Hosseini 06.04.2019 08:47

@mohammadHosseini Я получаю "Mach Turor" - это то, что я хочу.

Timothy Mach 06.04.2019 08:49

Что-то фанковое. Можете ли вы попробовать {{ $exam->user()->first()->name }}

ajthinking 06.04.2019 08:55

@ Андерс, проблема заключалась в проверке существования пользователя. ` {{$экзамен->пользователь->имя ?? 'Репетитор не найден'}} ` Вот как я решил эту проблему. Большое спасибо. ты дал мне подсказку

Timothy Mach 06.04.2019 09:37

Понятно. Отсутствовал один пользователь. использование оператора if, чтобы проверить, существует ли объект, решает его. Использование двух стрелок может привести к обнаружению пустого элемента/объекта, что вызовет проблемы, отсюда и необходимость в предложении условия. Спасибо вам, ребята.

@foreach($availableExams as $exam)
    {{$exam->user->name ?? 'No tutor found'}} 
 @endforeach

Обновите файл блейда.

@foreach($availableExams as $exam)
           {{ $exam->user()->first()->name }}
@endforeach

Другие вопросы по теме