Je voudrais avoir des fonctionnalités comme ceci:Puis-je avoir une relation "Parent has_many GrandChildren through Children" dans DBIx :: Class?
$parent->get_grandchildren_by_category({category => 'foo'});
je peux le faire facilement en dehors de la classe parente avec un simple enchaîné rejoindre:
$schema->resultset('Parent')->search(
{
'me.id' => 62,
'grandchildren.category' => 'foo'
},
{
join => {'children' => 'grandchildren'}
}
);
Mais à l'intérieur de la classe parente Je ne t ont accès (et ne devraient pas) à l'objet de schéma. A l'intérieur de la classe parent, je peux accéder à $self->children
mais cela retourne un jeu de résultats d'enfants, et je dois les parcourir pour obtenir grandchildren
.
Y a-t-il un moyen de définir ce style ActiveRecord?
class Parent < ActiveRecord::Base
has_many :children
has_many :grandchildren, :through => :children
end
Je peux me tromper ici, mais le «_rs» représente habituellement un resultset. @gchild_rs est en fait une collection d'objets ligne. Pour éviter toute confusion, appelez-le dans un contexte scalaire ou utilisez search_related_rs au lieu de search_related. – gpojd