2016-08-16 3 views
0

Я пытаюсь получить профиль, относящийся к данному пользователю на моем сайте.PHP Laravel eloquent отношение не работает при использовании findOrFail

Связь настроена правильно (я могу это сделать: Auth::user() -> profile для доступа к данным профиля Но когда я пытаюсь сделать это:. User::findOrFail(1) -> profile он дает мне ошибку, говоря, что это не объект (а значение профиля равно . null Почему это И да пользователь с идентификатором 1 существует

в моей User модели я установка это:?.

public function profile() { 
    return $this -> hasOne('App\Profile', 'user_id'); 
} 

И в моей Profile модели я сделал это:

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

Я только что увидел эту проблему при захвате X-пользователей и прохождении через них в петле foreach, как показано ниже.

<div class="thumbs-wrapper text-center"> 

     @foreach ($last_online as $user) 
      <div class="thumb @if(\App\User::isOnline($user -> id)) online @else offline @endif"> 
       <a href="/profile/view/{{ $user -> id }}"> 
        <img src="{{ asset($user -> profile -> picture) }}"> 
       </a> 
      </div> 
     @endforeach 

    </div> 

Что может быть неправильным? Заранее спасибо.

+0

Один или несколько пользователей в этом Еогеасп не сделано профиль, вот и все –

+0

У всех пользователей есть профиль. Он создается при регистрации пользователя с тем же user_id, что и пользователь. И я также проверил это вручную в моем менеджере баз данных. – Kaizokupuffball

+0

Затем проверьте стек и убедитесь, где произошла ошибка. –

ответ

0

Попробуйте это, если я понимаю, ваша проблема правильно

User::with('profile')->where('id', '=', 1)->firstOrFail(); 

или, если вам нужно загрузить много пользователей с их профилями

User::with('profile')->take(10)->get(); 
+0

Это тоже не работает. И у всех пользователей есть профиль.Он создается при регистрации пользователя с тем же user_id, что и пользователь. Это дает мне эту ошибку: 'Вызов неопределенного метода Illuminate \ Database \ Query \ Builder :: profile()' – Kaizokupuffball

0
Call to undefined method Illuminate\Database\Query\Builder::profile() 

профиль() существуют в пользовательской модели?

Хммм ... Он должен работать.

В модели пользователя:

public function profile() { 
    return $this->hasOne('App\Profile', 'user_id'); 
} 

В вашем методе контроллера:

$users = User::with('profile')->get(); 


dd($users); 

Illuminate\Database\Query\Builder::profile() Here's a screenshot also: i.imgur.com/zPJEaC5.png So weird I can use Auth::user() -> profile

:)

foreach ($users as $user) { 
$user->profile->user_id; //(or whathewer) 
} 
Смежные вопросы