package App::Schema::Result::Thing; __PACKAGE__->might_have( last_event => 'MyApp::Schema::Result::ThingEvent', sub { my ($rsrc, $us, $them)= @{$_[0]}{'self_resultsource','self_alias','foreign_alias'}; my $guard= $rsrc->schema->set_limit_dialect_scope_guard('Top'); # use "SELECT TOP x FROM ..." syntax for subquery return { "$them.id" => { '=' => $rsrc->schema->resultset('ThingEvent')->alias('thing_max_event')->search({ 'thing_max_event.thing_id' => { -ident => "$us.id" }, })->last_rs->columns(['thing_max_event.id'])->as_query } }; });