DBIx :: Class 및 Template Toolkit을 사용하여 Catalyst 응용 프로그램을 개발 중입니다. 내가 기대하고 나는 할 수 있어요으로이 데이터를 반환DBIx :: Class : 템플릿 툴킷의 하위 결과 집합이 결과 집합이 아닌 배열로 표시됩니다.
sub divisions_and_teams_in_season { my ($self, $season, $grid) = @_; return $self->search({ "division_seasons.season" => $season->id, "division_seasons.fixtures_grid" => $grid->id, }, { prefetch => [ "division_seasons", { "team_seasons" => { "team" => [{ "club" => "venue" }, "home_night" ] } } ], order_by => { -asc => [ qw(division_seasons.rank team_seasons.grid_position club.short_name team.name) ] } }); }
: 특정 부분에 내가 문제를 가진 데, 나는 결과 집합 내 ResultSet의 스키마에 다음 함수를 호출하여 사용하여 얻을 수 있습니다 내 컨트롤러 코드에서 다음은 team_seasons을 통해 내 결과 집합을 다시 얻을 반복 :
my $divisions = [ $c->model("DB::Division")->divisions_and_teams_in_season($current_season, $c->stash->{grid}) ]; foreach my $division (@{ $divisions }) { $c->log->debug($division->team_seasons->grid_positions_filled); # This works because $division->team_seasons is a resultset object }
하지만, 내 템플릿 ($divisions
을 은닉 한), 나는 grid_positions_filled 개체에 액세스 할 수 없습니다 해요 division.team_seaons 나을 제공하기 때문에 해당 부서의 팀 결과 집합 arrayref :
[% # Loop through our divisions FOREACH division IN divisions; CALL c.log.debug(division.team_seasons); # The output of this is something like: ARRAY(0x6f8318c) END; -%]
내 컨트롤러에서 나는 같은 디버그 로그 얻을 출력은 더 ResultSet 오브젝트의 목록과 같다 :
TopTable::Model::DB::TeamSeason=HASH(0x6eea94c) TopTable::Model::DB::TeamSeason=HASH(0x6f01834) TopTable::Model::DB::TeamSeason=HASH(0x6ef5284) TopTable::Model::DB::TeamSeason=HASH(0x6efec9c) TopTable::Model::DB::TeamSeason=HASH(0x6ef4dc4) TopTable::Model::DB::TeamSeason=HASH(0x6faf0ac) TopTable::Model::DB::TeamSeason=HASH(0x6eefa04)
희망이 모든 의미가 있습니다! 누구든지 내가 어떻게 team_season ResultSet에 대한 메서드에 액세스 할 수 있도록 컨트롤러에서 템플릿으로 동작을 얻을 수 있는지 알고 있습니까?
대단히 감사합니다.
스칼라 대 목록 컨텍스트 문제 같습니다. 'team_seasons_rs'를 시도해리스트 컨텍스트에서 결과 세트를 강제로 반환하십시오. – nwellnhof
미안합니다. @nwellnhof, 잘 모르겠습니다 - 어디에서 'team_seasons_rs'를 써야합니까? 이해할 수 있듯이,'team_seasons'는 두 테이블 사이의 관계 이름을 참조하고'team_seasons_rs'는 유효한 관계 이름이 아닙니까? – Chris
DBIC는'_rs'를 후행하는 관계 액세서의 특별 버전을 생성합니다. [the docs] (https://metacpan.org/pod/DBIx::Class::Relationship#has_many)를 참조하십시오. – nwellnhof