#php #laravel
#php #laravel
Вопрос:
В моем приложении у меня есть define relationship (профиль, пользователь, уровень), но когда я извлекаю данные, отображается ошибка ( Trying to get property 'email' of non-object
) как я могу решить эту проблему, заранее благодарю.
это пользовательская модель
public function profile()
{
return $this->hasOne(Profile::class, 'user_id');
}
Модель профиля
public function user()
{
return $this->belongsTo(User::class, 'id');
}
public function level()
{
return $this->belongsTo(Level::class, 'id');
}
Модель уровня
public function profile()
{
return $this->hasOne(Profile::class, 'level_id');
}
Это контроллер ProfileController
$users = Profile::with(['user', 'level'])->where('is_bd_partner', 'Yes')->get();
foreach ($users as $key => $value)
{
echo $value->first_name.'<br>';
echo $value->last_name.'<br>';
echo $value->user->email.'<br>';
echo $value->level->level.'<br>';
}
Комментарии:
1. можете ли вы показать вывод $users : dump($users); пожалуйста, перед foreach?
2. это дамп пользователя prntscr.com/my9awu
3. я использую один фреймворк laravel
4. Пожалуйста, не могли бы вы показать миграцию / структуру таблиц для моделей?
Ответ №1:
Обратите внимание, что belongsTo принимает foreign_key
в качестве первого параметра. Итак, вам следует изменить модель профиля следующим образом
public function user()
{
return $this->belongsTo(User::class, 'user_id');
}
public function level()
{
return $this->belongsTo(Level::class, 'level_id');
}
Подробнее здесь