⚠️ This content has been written a long time ago. As such, it might not reflect my current thoughts anymore. I keep this page online because it might still contain valid information.

Propel and Symfony: a year ago

2022-04-18 // I proofread this article and updated some links.

Did you know that the PropelBundle was part of the Symfony core? Yes, at the very beginning. It was moved out some time after. Basically, I didn’t create the PropelBundle but I started to learn Symfony by using it.


You seem to work on the PropelBundle actively, and that’s great news. This bundle is under my account right now because it is orphan. But if you want to take care of the maintenance of it, then I think it’s time for your fork to become the official repository for the bundle. What do you think?


To be honest, this bundle didn’t really work and I spent a fair amount of time to learn Symfony internals, learn Propel 1.6 internals and find ways to make this bundle work 😅 It was fun! After a few weeks, the bundle became useful and, at the same time, I joined e-TF1 where I had the opportunity to work with both Symfony and Propel. I could use this bundle in production!

A few months later, I accepted to take the lead of the Propel project and I added the PropelBundle as an official Propel project. It was the best choice because people helped me a lot to improve this bundle, and now it is fully compatible with Symfony (kudos to Toni who is the PropelBundle manager). To spread the word, I also wrote exhaustive documentation about Propel and Symfony.

Making this bundle reliable and trustful was the hardest part of the work. Even if the bundle worked great and even if we were there to answer questions or to fix issues, it was tricky to get more users. That’s why I asked Fabien to create a Propel Bridge in Symfony. It was the first step to avoid comments like “it’s not the default ORM, lalala”. At the same time, Symfony took the decision to be a View Controller framework without any Model layer bundled by default.

Today, I’m proud to announce that the last step has been unlocked thanks to Joseph. Propel has its own chapter in the official Symfony book, which means you have to think about which Model layer to use now. There is no more excuse to not try Propel in Symfony or to use Doctrine by default and not by choice.

Try Propel, seriously! It could fit your needs depending on what you expect. Some great bundles already support Propel (like the FOSUserBundle). Also please avoid comments like “Doctrine is much nicer”, which make little sense. Why is it much nicer? I never got any good arguments in favor of Doctrine I didn’t already know. I can hear everything that is constructive. I used Doctrine for more than six months, both ORM and ODM (MongoDB). I have strong arguments against it but I also like some parts of it. Who can say the same thing about Propel?

Now, you have the choice. It’s up to you. Thanks!

Feel free to fork and edit this post if you find a typo, thank you so much! This post is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Recent articles


No comments here. You can get in touch with me on Mastodon or send me an email if you prefer.