2016-12-15 147 views
0

我有一個Players/Lessonhours數據透視表,它保存從表單傳遞給它的所有值。但在我看來,它只顯示了一些相關的記錄。當我做一名$ players-> lessonshour-> toArray時,看起來我有問題。當我做$ lessonhours-> players-> toArray()時,我只會得到一些記錄。我無法看到我在關係設置中做錯了什麼。顯然需要一些東西。誰能幫忙?無法顯示Laravel數據透視表中的所有記錄

廷克:

Tinker view

MySQL的:

MySql view

機型號:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 
use Collective\Html\Eloquent\FormAccessible; 
use Carbon\Carbon; 


class Players extends Model 
{ 
    public $table = "players"; 

    protected $fillable = array('fname', 'lname', 'gender', 'birthdate'); 


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

    public function lessonhours() 
    { 
     return $this->belongsToMany('App\Lessonhours', 'lessonhour_player', 'lessonhours_id', 'players_id'); 
    } 

    public function getFullName($id) 
    { 
     return ucfirst($this->fname) . ' ' . ucfirst($this->lname); 
    } 

    protected $dates = ['birthdate']; 

    public function setBirthdateAttribute($value) 
    { 
     $this->attributes['birthdate'] = Carbon::createFromFormat('m/d/Y', $value); 
    } 
} 


Lessonhours Model: 

    <?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 
use Collective\Html\Eloquent\FormAccessible; 
use Carbon\Carbon; 

class Lessonhours extends Model 
{ 
    protected $fillable = array('signup_date', 'players_id', 'packages_id'); 

    public $table = "lessonhours"; 

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

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

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

    protected $dates = ['signup_date']; 

    public function setSignUpDateAttribute($value) 
    { 
     $this->attributes['signup_date'] = Carbon::createFromFormat('m/d/Y',  $value); 
    } 
} 

這就是視圖顯示。名單上的每個人都應該有至少1包,有的有2

Player List

回答

1

在玩家模型交換lessonhours_idplayers_id

public function lessonhours() 
     { 
      return $this->belongsToMany('App\Lessonhours', 'lessonhour_player', 'players_id', 'lessonhours_id'); 
     } 
+0

呀,通過顛倒這些你正在尋找了錯誤的教訓小時記錄。你在數據透視表上使用外鍵約束嗎?當玩家人數遠高於課時數時(這是因爲錯誤的lessonhour_id與現有的player_id相對應),這有助於防止這種情況發生。 –

+0

工作。我仍然無法訪問Players表的屬性。我沒有提到原來的問題,因爲我認爲問題是(原諒雙關語)相關.. $ lessonhours-> players-> fname等...產生一個未定義的屬性錯誤。我是否應該將此視爲一個不同的問題? – wdarnellg

+0

@CarterFort我確實在數據庫模式中定義了約束。謝謝。 – wdarnellg