[Catalyst] List/Scalar Context with TT + DBIC
Christopher H. Laco
claco at chrislaco.com
Wed May 31 22:54:41 CEST 2006
Christopher H. Laco wrote:
> Mark Blythe wrote:
>> This isn't strictly a Catalyst question, but it involves the
>> interaction of two commonly used Catalyst components: TT + DBIC. I'm
>> sure this must be an FAQ, but so far, RTFM and Googling have not
>> revealed the answer.
>>
>> How can I force scalar context from TT in order to get a DBIC
>> ResultSet object back from search() rather than a list of rows? For
>> instance:
>>
>> In TT template:
>>
>> [% results = c.model('DB::Foo').search({ col => $value }) %]
>>
>> This turns "results" into a list of records rather than an object I
>> can call next(), first(), etc on.
>>
>> I'll gladly RTFM if somebody can point me to the right FM.
>>
>> Thanks.
>
> My apologies. There IS code. I blame the long day and a trip the
> Dr/Hospital.
>
> Now that I see your code, I understand your problem. I too had the same
> problem. I believe it has to do with the fact that the resultset
> returned by DBIC is not really anything until it's used, and TT is
> guessing wrong about how to use it.
>
> Try adding this to your search:
>
> .search({ col => $value }, {cache => 1})
>
> and see if that fixes it.
When I had this problem, I could also mitigate it by calling
$result->count in the code, before returning the resultset. That's what
leads me to believe cache => 1 will probably fix it.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: OpenPGP digital signature
Url : http://lists.rawmode.org/pipermail/catalyst/attachments/20060531/30f897d0/attachment.pgp
More information about the Catalyst
mailing list