我正在尝试显示 Races + 参加比赛的人,我正在使用表关系,但我不确定我是否正确使用它。
查看:
@foreach($leagues->races as $race)
<!-- ATTENDANCE track -->
<div class="col s12 m6">
<div class="card">
<div class="card-image">
<img src="{{ asset("img/tracks/.png") }}">
<span class="card-title red attendance-track-box"><b>{{$race->event}}</b></span>
</div>
<div class="card-content attendance-content">
<ul>
@foreach($race->attendances as $attendance)
@if($attendance->status == 1)
<li class="border-left-green">{{$attendance->user->username}}</li>
@elseif($attendance->status == 2)
<li class="border-left-red"></li>
@elseif($attendance->status == 3)
<li class="border-left-cyan"></li>
@endif
@endforeach
</ul>
</div>
<div class="card-action">
<a class="waves-effect waves-light btn green">Yes</a> <a class="waves-effect waves-light btn red">No</a> <a class="waves-effect waves-light btn">Maybe</a>
</div>
</div>
</div>
@endforeach
模型联赛:
class Leagues extends Model
{
//
public function teams(){
return $this->hasMany('App\teams');
}
public function races(){
return $this->hasMany('App\races');
}
}
模型比赛:
class Races extends Model
{
//
public function attendances()
{
return $this->hasMany('App\attendances');
}
}
模型驱动程序:(将此用于驱动程序列表)
class Drivers extends Model
{
//
public function user(){
return $this->belongsTo('App\Users', 'users_id', 'id');
}
}
模型出勤:
class attendances extends Model
{
//
public function user(){
return $this->belongsTo('App\Users', 'users_id', 'id');
}
}
模型用户
namespace App;
use Illuminate\Database\Eloquent\Model;
class Users extends Model
{
//
}
我已经发布了 Drivers 模型,因为我也调用了 belongsTo。 基本上,我已经复制了代码,它适用于司机,但不适用于出勤
我得到的错误:
Trying to get property 'username' of non-object
用户.php
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'username', 'psn', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
}
最佳答案
你的模型关系只是在做相反的 belongsTo
。如果您想使用 belongsTo
,您的模型关系需要双向进行,但您的关系只会反向进行。首先使用 hasMany
、hasOne
等定义关系,然后您可以在其他模型中定义逆。
示例驱动程序:
class Drivers extends Model
{
public function user(){
return $this->belongsTo('App\Users', 'users_id', 'id');
}
}
出席示例:
class attendances extends Model
{
public function user(){
return $this->belongsTo('App\Users', 'users_id', 'id');
}
}
示例用户:
class Users extends Model
{
public function attendances()
{
return $this->hasMany('App\attendances');
}
public function drivers()
{
return $this->hasMany('App\Drivers');
}
}
每个类都需要相互引用。一个使用 hasMany
、hasOne
等来定义关系,另一个需要 belongsTo
来定义相反的关系。
关于php - Laravel 多个 belongsTo 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50915678/