0
我有一個Players/Lessonhours數據透視表,它保存從表單傳遞給它的所有值。但在我看來,它只顯示了一些相關的記錄。當我做一名$ players-> lessonshour-> toArray時,看起來我有問題。當我做$ lessonhours-> players-> toArray()時,我只會得到一些記錄。我無法看到我在關係設置中做錯了什麼。顯然需要一些東西。誰能幫忙?無法顯示Laravel數據透視表中的所有記錄
廷克:
MySQL的:
機型號:
<?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
呀,通過顛倒這些你正在尋找了錯誤的教訓小時記錄。你在數據透視表上使用外鍵約束嗎?當玩家人數遠高於課時數時(這是因爲錯誤的lessonhour_id與現有的player_id相對應),這有助於防止這種情況發生。 –
工作。我仍然無法訪問Players表的屬性。我沒有提到原來的問題,因爲我認爲問題是(原諒雙關語)相關.. $ lessonhours-> players-> fname等...產生一個未定義的屬性錯誤。我是否應該將此視爲一個不同的問題? – wdarnellg
@CarterFort我確實在數據庫模式中定義了約束。謝謝。 – wdarnellg