[TYPO3-mvc] Best practice for a domain model for scaled prices

Franz Koch typo3.RemoveForMessage at elements-net.de
Wed Dec 30 23:13:25 CET 2009


Hi Michael,

>> So I was thinking about dropping the "basic price" from
>> tx_myExt_domain_model_price and create it as record with the quantity
>> 1 in tx_myExt_domain_model_scaledPriceValues. Does this still sound
>> good to you?
>
> That sounds much better to me than your first approach. It will be more
> consistent and less error-prone (think about updating prices, which will
> have to be done at 2 places in your first draft!).

Thanks for sharing your thoughts. That's how I started implementing it 
by now - at least on DB level and in TCA so far.

> Maybe I should rename the scaledPriceValue then to
>> tx_myExt_domain_model_priceValue or something, but I fear the
>> resulting queries with joins over several mm-tables will become a
>> performance killer, too.
>>
>
> I actually don't think so. There will be a join of 3 tables:
>
> article->price->scaled_prices

well yes, while I could at least use the joins over several mm-tables 
for sorting, the process for fetching the actual objects for displaying 
scaled prices is triggering at least one additional query per article on 
using a intermediate price object. But I'll see how this turns out 
performance wise.

> That sounds quite easy for me. Perhaps you could introduce a field
> "standard_price" or "sorting_price" on the "price" object to be able to
> apply any field you wish as a sorting indicator. This could prevent a
> subselect on the scaled price table to get a - what-so-ever-looking -
> price for sorting. I'm not sure, whether this was the "basic_price" in
> your first draft... if that's what you wanted to do with it - I would
> still do so.

yes, the "basic_price" should have been the default price for regular 
sorting etc, but as it might also happen to search for and sort by the 
cheapest price possible, scaled prices could also come into place for 
those actions. But with the concept you also suggested this isn't a 
problem anymore. And the default price is always the one with the 
quantity "1" - so no extra property necessary either. I think that's the 
best way doing it.

> Another idea could be to use a price-property on the article. Not for
> returning any prices in the frontend but just for sorting. This could
> prevent you from doing any joins when sorting a list by price.

that won't work, because the general pricing can change depending on the 
catalog and the client selected in FE.

> I hope my thoughts could help you a little!

yes, thanks a lot.

-- 
kind regards,
Franz Koch

---------------------------------------------------
PayPal-Account: 'paypal _at_ elements-net _dot_ de'
---------------------------------------------------


More information about the TYPO3-project-typo3v4mvc mailing list