There's a really cool feature in the CakePHP web framework whereby you
can query a database recursively and have a query return not only the
records of a given query, but also any other records they refer to,
and I was wondering if there's anything similar in web2py. (There is a
'recursive' flag in the CakePHP 'find' function 0=don't return
referenced records, 1=return referenced records, 2=return referenced
records AND the the records they reference, etc.!)
For example, say you have two tables, products and transactions:
db.define_table('products', Field('name'), Field('Description')))
db.define_table('transactions', Field('product', db.products))
So, a query on 'transactions' returns something like:
transaction: id: 1
product: 12
then to get the data for product.id==12, you have to do
db.products[transaction.product] or similar to get the product data.
However, is it possible to make the query return, not the id of the
referenced record, but the actual DALStorage object representing the
object itself?:
transaction: id: 1
product: name: "Product 1"
description: "This is a test
product"
Then I envisage being able to directly reference, for example,
transaction.product.name
In practise, I want to display to product name for a given transaction
in multiple places in a page, and the only options I can see are
separately storing the product data, or calling
db.products[transaction.product] wherever I need it: the first seems a
bit clunky and the second requires a separate call to the db every
time. I could select the product data and cache it, I'd prefer not to.
I would love to know if what I've described, above, is possible.
Any ideas?
Si