perl – DBIx :: Class按ID从另一个表中获取行

前端之家收集整理的这篇文章主要介绍了perl – DBIx :: Class按ID从另一个表中获取行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的项目中,我有3个表:艺术家,专辑和曲目

结果艺术家:

...
__PACKAGE__->has_many(
     'albums' => 'MYLIB::DB::Schema::Result::MyDir::Album',{ 'foreign.artist_id' => 'self.id',},);
...

结果专辑:

...
__PACKAGE__->belongs_to(
     'artist' => 'MYLIB::DB::Schema::Result::Artist',{ 'foreign.id' => 'self.artist_id',);

__PACKAGE__->has_many(
     'tracks' => 'MYLIB::DB::Schema::Result::MyDir::Track',{ 'foreign.album_id' => 'self.id',);
...

结果跟踪:

__PACKAGE__->belongs_to(
    'album' => 'MYLIB::DB::Schema::Result::MyDir::Album',{ 'foreign.id' => 'self.album_id',);

现在我有一个对象$artist,我想通过ID获取Track.

查询示例:
SELECT * FROM Tracks WHERE track_id = $x

解决方法

如果要生成您提供给我们的sql,那么您拥有艺术家对象的事实就无关紧要了.只需获取一个跟踪结果集并在其上运行find().

my $track_rs = $schema->resultset('Track');
my $track = $track_rs->find($track_id);

如果由于某种原因,您没有架构对象,那么您可以从您的艺术家对象中获取该对象.

my $schema = $artist->result_source->schema;

猜你在找的Perl相关文章