[TYPO3-mvc] Query object and Joins
Dmitri Pisarev
dimaip at gmail.com
Thu Mar 18 06:20:07 CET 2010
Forgot to mention, I'm on Typo3v4.4Alpha1, XAMPP. Don't know how to
check the revision...
On 18.03.2010 7:43, Dmitri Pisarev wrote:
> Hi Jochen!
> I gave it a try and here's what system returned:
> Uncaught TYPO3 Exception
> #1247602160: Unknown column 'tx_alex_domain_model_tariff.service.type'
> in 'where clause'
> Tx_Extbase_Persistence_Storage_Exception_SqlError thrown in file
> C:\_web\xampp\htdocs\typo3_4v4\typo3\sysext\extbase\Classes\Persistence\Storage\Typo3DbBackend.php
> in line 783.
>
> By the way, you seem to have missed a parenthesis after
> $query->equals('client', $client).
>
> PS: I have to correct my function I posted in the previous message:
> public function findByClientAndType($client,$type) {
> $query = $this->createQuery();
> $query->statement('SELECT tx_alex_domain_model_tariff.uid,
> tx_alex_domain_model_tariff.service, tx_alex_domain_model_tariff.client,
> tx_alex_domain_model_tariff.price FROM tx_alex_domain_model_tariff LEFT
> JOIN tx_alex_domain_model_service ON tx_alex_domain_model_tariff.service
> = tx_alex_domain_model_service.uid WHERE
> tx_alex_domain_model_tariff.client='.$client.' AND
> tx_alex_domain_model_service.type='.$type);
> return $query->execute();
> }
> If I used a SELECT *, then it would obviously overwrite
> tx_alex_domain_model_tariff.uid with
> tx_alex_domain_model_tariff.service.uid.
>
> Thank you Jochen! Now if $query object was really that smart as you say,
> I would have been in love with it completely!
>
> Regards,
> Dmitri.
> On 17.03.2010 22:12, Jochen Rau wrote:
>> Hi Dmitri.
>>
>> On 17.03.10 18:30, Dmitri Pisarev wrote:
>>> Hi!
>>> I'm still on my way discovering extbase, this time I got to Query
>>> object...
>>>
>>> I have an object Tariff which has a property service of type Service,
>>> which has a property type of type Servicetype. So I need to select all
>>> tariffs of certain type.
>>> Normally I would create a join for that.
>>
>> Give
>>
>> public function findByClientAndType($client,$type) {
>> $query = $this->createQuery();
>> $query->matching(
>> $query->logicalAnd(
>> $query->equals('service.type', $type),
>> $query->equals('client', $client)
>> );
>> return $query->execute();
>> }
>>
>> a try.
>>
>> Regards
>> Jochen
>>
>
More information about the TYPO3-project-typo3v4mvc
mailing list