В чем разница между ResultSet и объектом?


person edem    schedule 25.03.2013    source источник


Ответы (2)


Предупреждение касается разницы между вызовом new для объекта ResultSet и имя класса ResultSet. Если вы хотите создать новый объект ResultSet с помощью конструктора ResultSet, вызовите new в пакете ResultSet:

my $resultset = DBIx::Class::ResultSet->new(...);

(Хотя обычно вам не нужно создавать объекты ResultSet таким образом.) Если вы вызовете new для объекта ResultSet, вы получите не новый объект ResultSet, а соответствующий объект результата (строки):

my $row = $resultset->new(...);

Многие другие классы Perl не имеют значения, вызывается ли new для имени класса или объекта класса, отсюда и предупреждение.

person nwellnhof    schedule 25.03.2013

Взято из документации DBIx::Class::ResultSet:

DBIx::Class::ResultSet — представляет запрос, используемый для получения набора результатов. ResultSet — это объект, в котором хранится набор условий, представляющих запрос.

ResultSet — это конкретный объект, представляющий запрос. Объект (не объект ResultSet) — это отдельная сущность из таблиц, определенных в DBIx.

Допустим, у вас есть БД отцов и сыновей, один ко многим (у каждого отца может быть много сыновей). Таким образом, отец-одиночка в контексте DBIx является объектом, как и сын. Но запрос «у какого отца есть сын по имени Джеймс» является объектом ResultSet.

person Mattan    schedule 25.03.2013