2015-06-04 2 views
-1

У меня есть две таблицы: user и student. Поле username от user является внешним ключом как login_id в student. Я создал красноречивые отношения в каждой модели, но когда я пытаюсь получить доступ Auth::user()->student->id это дает мне:Попытка получить собственность не-объекта в laravel

Trying to get the property of a non-object.

Студент Модель:

public function user() 
{ 
    return $this->belongsTo('user','login_id'); 
} 

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

public function student(){ 
    return $this->hasOne('student') 
} 

ProfileController.php

<?php 
class ProfileController extends BaseController 
{ 
    public function showinfo() 
    { 
     if (Auth::check()) 
     { 
      $user_id = Auth::user()->username; 
      $student_id = Auth::user()->student->id; 
     } 
    } 
} 

Выше отмечено, ошибка возникает при попытке войти в систему.

+0

Нет, теперь я получаю другую ошибку: BadMethodCallException HELP Призыв к неопределенным метод Осветите \ Database \ Query \ Builder :: студент() – VP1234

ответ

0

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

$student = Auth::user()->student; 
if($student) $student_id = $student->id; 
0
$student_id = Auth::user()->student->id; 

Если он не содержит значения, то вам получить эту ошибку. Попробуйте использовать isset или пустое, зависит от того, что вам нравится.

Только у многих-многих отношений вы используете ().

Пример:

$user_companies = Auth::user()->companies(); 

foreach($user_companies as $company) 
Смежные вопросы