2016-11-19 2 views
1

В проекте Laravel 5 я пытаюсь показать зарегистрированному пользователю информацию об их пакетах уроков. Я пытаюсь использовать предложение where, которое получает нужную информацию. Кажется, я не могу получить данные о взаимоотношениях из коллекции, которую я возвращаю. Я потерян и прошу прощения. Кажется, я не могу найти никакой информации, относящейся к этой проблеме.laravel 5 показать связанные данные для входа в систему пользователя

Текущая ошибка: Не определено свойство: Осветить \ Database \ Eloquent \ Коллекция :: $ игроков (Вид: /home/ubuntu/workspace/resources/views/auth/account/mylessonhours.blade.php)

Мой контроллер:

public function getMyLessonhours(Lessonhours $lessonhours, Packages $packages) 
{ 
    $packages = Packages::all(); 
    $lessonhours = Lessonhours::whereHas('players', function($q) 
    { 
     $q->where('users_id', '=', Auth::user()); 
    })->with('players')->get(); 
    return view('auth.account.mylessonhours', compact('lessonhours'), compact('packages')); 
} 

Мои отношения: пользователей:

public function players() 
{ 
    return $this->hasMany('App\Players', 'users_id'); 
} 

Игроки:

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

Lessonhours:

public function players() 
{ 
    return $this->belongsTo('App\Players', 'players_id'); 
} 

public function packages() 
{ 
    return $this->belongsTo('App\Packages', 'packages_id'); 
} 

public function hoursused() 
{ 
    return $this->hasMany('App\Hoursused', 'lessonhours_id'); 
} 

И часть зрения, которая не

<h3>{{ $lessonhours->players->getFullName($lessonhours->players_id) }}</h3> 
         {{ $lessonhours->players->gender }}<br> 
         <a href="#" class="btn btn-default btn- pull-right"> 
            <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> 
            Edit {{ $lessonhours->players->getFullName($lessonhours->players->id) }}</a> 
         Birthdate: {{ $lessonhours->players->birthdate->format('m-d-Y') }}<br> 

         Family: {{ $lessonhours->players->users->famname }}<br> 
         <hr> 

Спасибо за помощь.

UDATE: После выполнения dd ($ lessonhours); Я получил следующие данные в коллекции, которая делает отображение нужной информации, я просто продолжать, чтобы получить «неопределенные» ошибка выше:

Collection {#216 ▼ 
    #items: array:1 [▼ 
    0 => Lessonhours {#202 ▼ 
     #fillable: array:3 [▶] 
     +table: "lessonhours" 
     #dates: array:1 [▶] 
     #connection: null 
     #primaryKey: "id" 
     #keyType: "int" 
     #perPage: 15 
     +incrementing: true 
     +timestamps: true 
     #attributes: array:6 [▼ 
     "id" => 2 
     "players_id" => 2 
     "packages_id" => 2 
     "signup_date" => "2016-06-01" 
     "created_at" => "2016-11-19 03:31:11" 
     "updated_at" => "2016-11-19 03:31:11" 
     ] 
     #original: array:6 [▶] 
     #relations: array:1 [▼ 
     "players" => Players {#220 ▼ 
      +table: "players" 
      #fillable: array:4 [▶] 
      #dates: array:1 [▶] 
      #connection: null 
      #primaryKey: "id" 
      #keyType: "int" 
      #perPage: 15 
      +incrementing: true 
      +timestamps: true 
      #attributes: array:8 [▼ 
      "id" => 2 
      "users_id" => 2 
      "fname" => "Girltest" 
      "lname" => "Testfam" 
      "gender" => "Female" 
      "birthdate" => "2010-10-04" 
      "created_at" => "2016-11-19 03:30:56" 
      "updated_at" => "2016-11-19 03:30:56" 
      ] 
      #original: array:8 [▶] 
      #relations: [] 
      #hidden: [] 
      #visible: [] 
      #appends: [] 
      #guarded: array:1 [▶] 
      #dateFormat: null 
      #casts: [] 
      #touches: [] 
      #observables: [] 
      #with: [] 
      #morphClass: null 
      +exists: true 
      +wasRecentlyCreated: false 
     } 
     ] 
     #hidden: [] 
     #visible: [] 
     #appends: [] 
     #guarded: array:1 [▶] 
     #dateFormat: null 
     #casts: [] 
     #touches: [] 
     #observables: [] 
     #with: [] 
     #morphClass: null 
     +exists: true 
     +wasRecentlyCreated: false 
    } 
    ] 
} 

UPDATE: Ошибка происходит с помощью следующей строки:

<h3>{{ $lessonhours->players->getFullName($lessonhours->players_id) }}</h3> 

Код работает, но мне нужна только одна родительская запись. Too many parent records

+0

Auth: user() dosent return id ... вам нужен Auth :: id() или Auth :: user() -> id; – RohitS

+0

@wdarnellg вы используете для каждого для 'lessonhours' в поле зрения? поскольку вы использовали метод 'get()' для извлечения данных, он будет иметь массив коллекций независимо от количества результатов. Это может вызвать проблему – jaysingkar

+0

@jaysingkar В этом была проблема. Добавление «@foreach» получило данные для отображения. Спасибо. Я бы приветствовал более элегантный способ сделать то же самое, если он есть. ;-) Как отметить это как ответ? – wdarnellg

ответ

0

Поскольку get() метод возвращает массив коллекции независимо от числа результатов. Если вы ожидаете только одного результата, вы можете использовать метод first().

$lessonhours = Lessonhours::whereHas('players', function($q) 
    { 
     $q->where('users_id', '=', Auth::user()->id); 
    })->with('players')->first(); 

Или используйте for each цикл при рендеринге на вид.

1

Вам необходимо получить идентификатор от объекта пользователя, поэтому изменить вы запрашиваете к:

$lessonhours = Lessonhours::whereHas('players', function($q) { 
     $q->where('users_id', Auth::user()->id); 
    })->with('players')->get(); 
+0

Я сделал dd ($ lessonhours); используя оба запроса с тем же результатом. У меня есть ожидаемые данные из часов уроков и столов игроков. – wdarnellg

+0

Ошибка совпадает. Я не могу показать связанные данные игроков в представлении. – wdarnellg

+0

И что вы получаете при использовании 'dd ($ lessonhours)', если вы положили его прямо после кода запроса? Если у него есть данные, отправьте его где-нибудь. –

Смежные вопросы