2012-08-14 48 views
3

我使用DBIx::Class,我有這樣的查詢:DBIx ::類臨時列

$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))價值,但因爲這不是一個真正的列在表中,引用DBIx::Class::Row對象的total_time似乎不起作用。有誰知道我可以如何獲得這些臨時專欄?謝謝!

+0

我知道你的意思。有好處和壞處,但我覺得我對SQL感到滿意,這並沒有太多的幫助。這只是我正在編寫一個催化劑應用程序,所以很多東西都與'DBIx :: Class'集成在一起,我基本上覺得我必須使用它。 – srchulo 2012-08-14 22:30:35

回答

2

select docs完美地描述瞭如何實現你想要完成的任務。 還建議儘可能避免字面SQL,您可以改爲使用{ sum => \'UNIX_TIMESTAMP(end_time)-UNIX_TIMESTAMP(start_time)' }。 字面SQL中的'as'不需要爲列指定名稱,您必須使用as搜索屬性或更好的列快捷鍵而不是select + as。

+0

非常有幫助。謝謝! – srchulo 2012-08-15 03:36:21