[TYPO3-dev] extbase and SQL functions
Patrick Schriner
patrick.schriner at diemedialen.de
Tue May 31 11:24:17 CEST 2011
I may be on the wrong track, but my guess is that you have to use the
statement() method.
On Tue, 31 May 2011 10:58:40 +0200, Adrien Crivelli
<adrien.crivelli at gmail.com> wrote:
> Hello,
>
> I develop an extension with Typo3 4.5 and extbase. I need to write
> queries
> using SQL functions, such as SELECT * FROM users WHERE MD5(uid);. But I
> can't get it to work.
>
> So far I got this code:
>
> <?php
> class Tx_Newsletter_Domain_Repository_EmailRepository extends
> Tx_Newsletter_Domain_Repository_AbstractRepository {
> public function findByAuthcode($authcode) {
> $query = $this->createQuery();
> $query->setLimit(1);
> $c = $query->equals('md5(concat(`uid`, `recipient_address`))',
> $authcode);
> $query->matching($c);
> return $query->execute()->getFirst();
> }
> }
>
>
> I debugged the whole thing and figured out that
> sysext/extbase/Classes/Persistence/Storage/Typo3DbBackend.php will
> enventually append tablename to any function used. So the query executed
> will be similar to:
> SELECT tx_newsletter_domain_model_email.* FROM
> tx_newsletter_domain_model_email WHERE
> tx_newsletter_domain_model_email.md5(concat(`uid`, `recipient_address`))
> =
> 'abc';
>
> instead of :
> SELECT tx_newsletter_domain_model_email.* FROM
> tx_newsletter_domain_model_email WHERE md5(concat(`uid`,
> `recipient_address`)) = 'abc';
>
> I can't find any way to change this behavior and inheriting seems very
> heavy
> (involving inheriting Typo3DbBackend and probably implementing another
> Tx_Extbase_Persistence_QOM_SelectorInterface).
>
>
>
> Did I miss an obvious way to achieve this simple goal ?
>
>
> (btw I couldn't find any useful documentation except doc_extbase on git
> which does not cover in-depth extbase API)
More information about the TYPO3-dev
mailing list