首页 > 解决方案 > 在 Laravel 中获取查询关系的关系?

问题描述

我正在尝试获得主要锦标赛的氏族成员,只有一个赛季实例。

我使用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.

标签: phplaravel

解决方案


试试这个$teams = $tournament->clans(); Clans 是模型上的关系函数,你需要放括号。这应该返回 Clan 类的集合。


推荐阅读