2016-12-15 124 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

相关问题