Propel2 and Doctrine2: Together but not scrambled


Symfony | Frameworks | Me | Doctrine | Propel | September 21, 2010

Eleven days ago, the core team from the Propel Project was discussing about its future. Some thought that this meeting was just to give a final "rest in peace" to Propel, however they could not be more wrong. Propel is more alive than ever!.

 

Doctrine logo            Propel logo

 

Many years ago, in the beginnings of 2008, I met a framework, it was our beloved symfony framework, and with it, I met a great ORM (you can guess), it was Propel. This ORM offered a lot of amazing things I did not had seen before, like code generation and an API to do queries (Criteria) to the database without the need to do SQL.

I spent so much time with my new friends, but then a new ORM appeared in the field. Doctrine, not so well considered at first because of its beta state. Doctrine offered similar features than Propel like an Active Record implementation. However, for the queries to the database it used DQL (Doctrine Query Language), heavily based on HQL (Hybernate Query Language), instead of the Criteria way in Propel. By that time, I was working in a kind of intranets projects that need heavy queries with complex joins and DQL greatly helped me with them. This was hard to do with Propel (in my opinion). Doctrine makes heavy use of magic methods (overall __call), to achieve its functionality, this brings some overhead, however in that time performance was not an issue (for me). These two facts were decisive in my decision (well, the team's decision ;) ) to change to Doctrine. That was on late 2008.

That way I left Propel in the road and changed to Doctrine ... it was hard. Maybe, sometime you thought about why not to unify these two projects, it was like a crazy idea before. However, that crazy idea, today is real. Propel2 will be an Active Record implementation on top of Doctrine2 DBAL (database abstraction layer) and Doctrine2 ORM. How this happened?, well, eleven days ago, the core team from Propel met on the IRC to talk about the future of Propel2. In this talk was also invite Jonathan H. Wage (@jwage) from the Doctrine Project. After discussing the reasons about why no to duplicate the same functionality that already have Doctrine2 and what benefits Propel2 will gain with the DBAL and ORM components; François Zaninotto (@francoisz) and the core team decide to based Propel2 on top of Doctrine2.

Propel2 will be an Active Record implementation, it will require PHP 5.3, it will be backwards-compatible (most of it) and François Zaninotto will lead this new Propel version. In this point if you does not known so much about Propel then I bet you already be asking ... What will have Propel2 that already Doctrine2 does not have it?, the answer is simple, it will be faster, why?, because it will have code generation. However in this point I'm not pretty sure how much faster, anyway, it will have other features like the implementation of the Active Record pattern, (something that Doctrine2 does not implement) and the use of Query API instead of the Doctrine DQL.

The central idea about all of this that excites me so much is the fact to have the two main PHP ORMs working site by side to improve themselves. Pushing both into the same direction. I hope you to be so happy as I am, and start to contribute to these two amazing projects.

If you wanna read the whole IRC conversation check it here. You should, there is a funny part when some guy just enter and start asking technical questions and then asks if François is a bot ... XD.


Comments


Laurynas Malisauskas said about 7 days later

this is really great! Propel code generation is not only faster, but it also makes easier to code, because IDEs autocomplete will work without any effort :)



Hey Stranger, leave a comment:

Last Posts

Autoloading: Symfony vs Yii

Symfony2, PhpBB4 and Drupal8

Type and boolean columns with Doctrine and Symfony

Refactoring queries with Doctrine

Extending your Doctrine Model: Template Classes

Integrating Doctrine: Symfony vs Yii

Passing parameters from the action to the view: Symfony vs Yii

Yii framework

Adding custom information to your Doctrine schema

PHP Advent Calendar 2010


My Tweets

19 days ago
Writing clean code in PHP 5.4 | Web Builder Zone: https://t.co/IAFFj3A8 via @addthis
3 months ago
Interesting tips about #scaling https://t.co/QC2paoDK
3 months ago
Learning to use #Windows #ActiveDirectory
4 months ago
Ayni - Blog: CUESTIONARIOS PARA ANÁLISIS-https://localhost:8080/AYNI-war/faces/ListarComentario.xhtml?txtIdPublicacion=2
4 months ago
Día tranquilo en casa :)#fbb
5 months ago
#Adobe Reader App crushed my new #Android movile :/
5 months ago
Testing from Android =D
6 months ago
#Refactoring code.
6 months ago
You should Snog, Marry or Avoid me https://t.co/pZCDIwW
6 months ago
Yahoo’s Options v@TechCrunchnhttps://t.co/yjzsKstKst What will Yahoo do?
6 months ago
Just realize my post https://t.co/nSuJjSp, written so many time ago, really contribute to make it happen: https://t.co/wMqYrV3
6 months ago
An Introduction to Redirecting URLs on an Apache Server https://t.co/s79ThOy via @WebmasterWorld
6 months ago
Actualizando a #Eclipse Indigo!
7 months ago
Vota x lamula.pe: https://t.co/WTWMkFG via @addthis
7 months ago
Apple Pushes Past Exxon To Become The Most Valuable Public Company In The World (Temporarily) via@TechCrunchhhttps://t.co/lowONSZZ
8 months ago
finally this class #semester is finished, new #projects in mind
8 months ago
Mark Zuckerberg Explains His Law Of Social Sharing [Video]https://t.co/sqq10Ehh via@TechCrunchh
9 months ago
retomando mi #twitter #notime
9 months ago
How Facebook Can Put Google Out of Businesshttps://t.co/HqDfQGoo via@TechCrunchh
10 months ago
So why not just cut out the middle man? Microsoft.https://techcrunch.com/2011/05/15/samsung-series-5-chromebook/
10 months ago
really like to #design class hierarchies with #compositepattern
10 months ago
Similarly, Microsoft.com started to use jQuery instead of their own ASP.NET Ajax framework. They are still using Windows, for whatever XD
10 months ago
Estudiantes de la PUCP le “voltean” campaña a esposo de Keiko | yoperiodhttps://t.co/ruI9UnmI9Unm@lamulaamula
10 months ago
Reading: Apress.-.Pro.html"https://www.twitter.com/search?q=#php">#php #performance #read
10 months ago
debug_backtrace() is very important on certain situations. #php #debug
11 months ago
@alvarezrodrich felicitaciones!
11 months ago
time to do some #uml diagrams, #classdiagram
11 months ago
hoy es el día,#votaa conciente#peruu
11 months ago
@skoop @funkatron I think someone had a bad day!, #Frameworks are there but you don't have to use them.
11 months ago
making #wireframes for a new #functionality
11 months ago
so much #spam on my #blog =(
12 months ago
learning new topics and tools that I did not use before #rcp
12 months ago
aprendiendo muchos temas y herramientas que no utilizaba antes #rcp
12 months ago
#tweaking httpd.conf #virtualhost
12 months ago
thanks #symfony 1.4, even when i'm not using the entire #framework, yours classes save my life!
12 months ago
integrating with #SOA using #soap
12 months ago
It seems my most #productive working hours are on #sunday #afternoon #evening! XD
12 months ago
#ASOT 500 =)
12 months ago
installing SCA_SDO on #Centos #php
12 months ago
My web service using #soap worked!!!!! #php #SCA #SDO
12 months ago
Working in a new place since last week!, #RCP: Red Científica Peruana, the one which sells the .pe domains in#Perúú ->#happypy
about 1 year ago
Finally with a new #laptop: #Toshiba =)
about 1 year ago
@pasku1 Thanks, I will try Pivotaltracker.
about 1 year ago
@doolphy thanks for your answer doolphy! I'll try you!
about 1 year ago
@jmasson thanks for your answer! Jira + Confluence is a good combination.
about 1 year ago
Which is the best project management and collaboration tool right now? #projectmanagement #tool #collaboration
about 1 year ago
What a #voice! Sied Van Riel feat Nicole McKenna - Stealing Time (Aly & Fila Remix) + #ASOT 497 #trancefamily
about 1 year ago
working on a situation where #php #traits would be very useful
about 1 year ago
It is #awesome when you finish doing a lot of changes and nothing is broken =) #TDD #testing
about 1 year ago
oh, happy birthday! @mtabini o mejor dicho feliz cumpleaños!
about 1 year ago
why do #IE8 not accept #javascript "const" keyword?
about 1 year ago
Discovering there is much #more to do with #javascript ... a lot.
about 1 year ago
#composition over #inheritance: #javascript
about 1 year ago
Awesome #song!: Cerf, Mitiska & Jaren - Another World (Original Vocal Mix) #ASOT 495 #trancefamily
about 1 year ago
My legal woman is #PHP, but I have an affair with #Javascript, overall when she wears #jQuery.
about 1 year ago
This presentation is one of the best I've seen about #unit #testing https://www.slideshare.net/avalanche123/clean-code-5609451
about 1 year ago
where to do a master on #IT: US or Spain? #survey #php #master plz RT
about 1 year ago
Bobina feat. Betsie Larkin - You Belong To Me: What a #beautiful voice -> #ASOT 494 #arminvanbuuren
about 1 year ago
OH NO, IT'S MONDAY -- 2011-02-07 https://t.co/pgaIxe5 via @gojkoadzic
about 1 year ago
it was not a + b, it was parserInt(a) + parseInt(b) =(, #javascript #fail
about 1 year ago
The models are complete representations of the system, whereas an #architectural #view focuses only on what is architecturally #significant.
about 1 year ago
@jmasson that would be great and finally #wikimedia, #drupal, #wordpress and maybe #joomla would push towards the same side, the #php side.
about 1 year ago
@jmasson Thanks!, #PHP has a bright #future ahead.
about 1 year ago
A new #blog post about not reinventing the #wheel: /article/symfony2_phpbb4_and_drupal8 #symfony #phpbb #drupal
about 1 year ago
@giorgiosironi #indeed, that's a very good #question. I think an average of 4 but also depends on how much that #developer work.
about 1 year ago
It seems the new platform for deploying, managing and scaling PHP apps is https://orchestra.io/ #cool
about 1 year ago
#Phase project planning vs #iteration project #planning - #project #management
about 1 year ago
#jeditable with #jquery save my life =)
about 1 year ago
Amazing #song -> Sied van Riel feat. Nicole McKenna - Stealing Time #ASOT 493 #trancefamily
about 1 year ago
I simply love "offset" #jquery function =)
about 1 year ago
New #blog post: type and boolean columns /article/type_and_boolean_columns_with_doctrine_and_symfony #doctrine #symfony
about 1 year ago
I really don't understand why projects like #drupal does not base their components in projects like #doctrine and #symfony
about 1 year ago
OH NO, IT'S MONDAY -- 2011-01-17 https://t.co/37pr4Bd via @gojkoadzic
about 1 year ago
@alvarezrodrich me alegra ver q ya borró su cuenta Sr. Rodrich,#twitterr es malo jajja, XD
about 1 year ago
Acabo de hacerle a mi #brother @diegonl89 un blog para que hable de #actualidad en general: https://www.elgatotechero.com #peru
about 1 year ago
I just made to my #brother a #blog to talk about current #events in #peru: https://www.elgatotechero.com
about 1 year ago
Amazing things can be done with #javascript and #css, and of course with the help of #jQuery =)
about 1 year ago
An architecturally significant element is an element that is important for #understanding the #system.
about 1 year ago
An architecturally element has a wide impact on the #structure, #performance, #robustness, #evolvability, and #scalability of a #system.
about 1 year ago
@giorgiosironi Definitely!
about 1 year ago
Playing with #table #inheritance in #Doctrine
about 1 year ago
Reading about #RUP, and how addresses the #major difficulties in a new #project.
about 1 year ago
A new blog #post about #refactoring your queries with #Doctrine: /article/refactoring_queries_with_doctrine #symfony
about 1 year ago
Yandex in 2010: 43 percent revenue growth https://t.co/cpjT5Jw via @cnet
about 1 year ago
Going forward!!!!! =) poco a poco llegan los resultados de tanto esfuerzo #fb
about 1 year ago
Perfect #system with respect to the #requirements but the #wrong system with respect to the #real #problem at the time of #delivery.
about 1 year ago
Going #forward! =) #fb
about 1 year ago
A new #blog #post about integrating #Doctrine with #Yii and #Symfony: /article/integrating_doctrine_symfony_vs_yii
about 1 year ago
@sam_dark Ok thanks!, but I don't understand why in #Yii documentantion use $_GET and $_POST instead of CHttpRequest https://bit.ly/i5emoL