2016-11-25 2 views
0

Я пытаюсь понять, как Laravel обрабатывает сводные таблицы. Я почти там, и тогда эта ошибка выскакивает:Почему вызов отношений onetoMany в Laravel 5.3 вызывает неопределенную ошибку свойства?

Undefined property: Illuminate\Database\Eloquent\Collection::$subcategory 

Я 99% уверен, что это потому, что я не называю отношения должным образом, и в результате он не может вытащить данные из объект. Тем не менее, поскольку у Laravel очень мистический способ делать повороты, и после нескольких часов траления через документацию, учебники и объяснения. Я все еще довольно потерял, как реализовать отношения. Это то, что у меня есть. Что я ошибаюсь?

бирки модели:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Ministry_Prefs_User extends Model 
{ 
    protected $table = 'ministry_prefs'; 

    public function ministry_prefs_user() { 

     return $this->belongsToMany('App\UserEdit', 'tag_user', 'tag_id', 'user_id'); 
    } 
} 

Соответствующий код модели пользователя:

public function ministry_prefs_user() { 

     return $this->belongsToMany('App\Ministry_Prefs_User', 'tag_user', 'user_id', 'tag_id'); 
    } 

Контроллер:

public function show($id) 
    { 
     try { 
     $loc = UserEdit::findorFail($id); 
     $array = UserEdit::findorFail($id)->toArray(); 
     //$prefs = Ministry_Prefs_User::find($id); 
     return view('UserEdit', compact('array', 'loc')); 

     } catch(\Exception $e) { 
      return \Redirect::route('users.index') 
       ->withMessage('This user does not exist'); 
     } 


    } 

Лопатка печать тестовых данных:

{{ $loc->ministry_prefs_user->subcategory }} 

Пробовал это, что, безусловно, не работает:

@Foreach ($prefs->ministry_prefs_user as $pref) 
       {{ $pref->tag }}<br> 
       {{ $pref->subcategory }}: {{ $pref->description }} 

    @Endforeach 

таблица tag_user выглядит немного как это с внешними ключами связанные гиперссылками (я думаю):

tag_user

Данные хранится как так:

tags

таблица ссылка теги выглядит как это:

prefs

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

ответ

1

Это выглядит ваш $loc->ministry_prefs_user возвращает коллекцию, так что вы можете foreach как:

@foreach ($loc->ministry_prefs_user as $pref) 
    {{ $pref->tag }}<br> 
    {{ $pref->subcategory }}: {{ $pref->description }} 
@endforeach