I'm using Symfony2 with Doctrine. I have tons of entities (tables) and here's what I'm trying to accomplish:
PROBLEM
Every entity needs to have 2 fields (columns), for example from_date
and to_date
by default.
Suppose I have the following entity defined in the product.orm.yml
file:
Some\Random\Namespace\Product:
type: entity
table: product
id:
id:
type: integer
generator:
strategy: AUTO
fields:
name:
type: string
length: 255
description:
type: text
price:
type: float
After I would run doctrine:schema:update
the created table should already have from_date
and to_date
columns.
Now, lets say I'm trying to fetch all the products from the database. I would do it like so:
$products = $this->getDoctrine()->getRepository('SomeRandomBundle:Product')->findAll();
This would normally fetch ALL the products from the database. What I would like to do, is to fetch only products where from_date
<= some_date
<= to_date
. There would be a function getSomeDate()
that Doctrine would have to call in order, to get the value of some_date
.
Not that it should also work with custom queries written in DQL or if I do something like this
$products = $this->getDoctrine()->getRepository('SomeRandomBundle:Product')->findByPrice(20);
However, it should not affect cases, where I try to fetch the entity by it's PK using the find method or custom DQL query.
ADDITIONAL DETAILS
There would also be some entities, that would not follow the above rules.
I know I could create from_date
and to_date
in every entity + perform the check, but since there will be thousands of queries in the application it would only make code less readable.
GOAL
The goal of the above is to allow user, to see the state of the application as it was, anywhere in the past. If you know a different approach that can achieve the same goal it would also be great.
Thank you for your time!