我正试图让主要比赛的战队成员,只有一个赛季实例。
我使用关于tournaments
关系的查询来获取主要比赛,然后在刚刚获取的比赛模型上调用clans
关系。
除了..它不再是模型了,我很确定它是一个查询?还是收藏,对不起我的理解,但简单地解释一下,我无法再访问关系了?
在查询比赛后仍然可以致电clans
的情况下,我需要帮助。
这是我的模特。
class Season extends Model
{
public function clans() {
return $this->belongsToMany(Clan::class);
}
public function tournaments() {
return $this->hasMany('App\Tournament', 'season_id');
}
public function primaryTournament() {
return $this->tournaments->where('is_primary', '1');
}
}
class Tournament extends Model
{
public function clans() {
return $this->belongsToMany(Clan::class);
}
public function season() {
return $this->belongsTo('App\Season', 'season_id');
}
}
我正在努力实现这一目标:
$season = Season::all()->last();
$tournament = $season->primaryTournament();
$teams = $tournament->clans; // this is what erorrs
什么阻止了我?
Property [clans] does not exist on this collection instance.
答案 0 :(得分:0)
尝试
$teams = $tournament->clans(); // with parenthesis
问题显然出在$ tournament上,它是锦标赛类的集合,而不是唯一类的实例(因为它是通过-> where('is_primary','1')获得的), 您可以通过-> first()方法选择第一个实例 或遍历$ tournament值并访问氏族属性。
答案 1 :(得分:0)
尝试这个$teams = $tournament->clans();
氏族是模型上的关系函数,您需要加上括号。这应该返回Clan类的集合。