The problem is that Doctrine drivers are not transparent, as in you cannot use the same SQL on all the drivers. This is a big problem for us, as no one should be expected to write different SQL based on which driver is running underneath. One example where this occurs is when using parameters in prepared statements. Only positional parameters are supported by all drivers - this is just my assumption, actually I could not find any guarantee for this either. Thus we have a couple of choices:
- Require using positional parameters
- Hack our abstractions into the DBAL drivers, that fix their "broken" drivers
- Annoy them with a feature request until they comply - note: our use case might be quite different then most of their user base (as in we have no idea what driver is used)
- keep our good old DBAL
Connection
object, so if you call executeUpdate()
or executeSelect()
you should be able to use any parametrization on any driver. However, if one calls prepare
on the connection object all bets are off, you get what you get, which is kind of not good enough for our purposes.