DBIx::Class Временный столбец

Я использую DBIx::Class и у меня есть такой запрос:

$groups = $c->model('DB::Project')->search(
{ "sessions.user_id"=>$c->user->id,done_yn=>'y' },
{
    select   => ["name", "id",\'SUM(UNIX_TIMESTAMP(end_time)-UNIX_TIMESTAMP(start_time)) as total_time'], #\''
    join         => 'sessions',
  }
);

Я хотел бы иметь возможность получить значение SUM(UNIX_TIMESTAMP(end_time)-UNIX_TIMESTAMP(start_time)), но, поскольку это не настоящий столбец в таблице, ссылаясь на total_time для DBIx::Class::Row не работает. Кто-нибудь знает, как я могу получить эти временные столбцы? Спасибо!


person srchulo    schedule 14.08.2012    source источник
comment
Я знаю, что Вы имеете ввиду. Есть свои плюсы и минусы, но мне кажется, что я достаточно хорошо разбираюсь в SQL, так что это не слишком помогает. Просто я пишу приложение-катализатор, и так много вещей интегрировано с DBIx::Class, что я в основном чувствую, что должен его использовать.   -  person srchulo    schedule 15.08.2012


Ответы (1)


отборные документы прекрасно описывают, как достичь того, что вы пытаетесь выполнить. Также рекомендуется по возможности избегать буквального SQL, вместо этого вы можете использовать { sum => \'UNIX_TIMESTAMP(end_time)-UNIX_TIMESTAMP(start_time)' }. «Как» в буквальном SQL не требуется, чтобы дать столбцу имя, вы должны использовать либо атрибут поиска as, либо лучше ярлык столбцов вместо select+as.

person Alexander Hartmaier    schedule 14.08.2012