Выбор PHP ORM, ActiveRecord?

Посоветуйте, пожалуйста, с выбором ORM Framework для PHP. Раньше использовал Yii и с ней же Yii ActiveRecord, но сейчас нужно выбрать отдельный framework. (Doctrine, Propel и так далее).

Желательно что бы был хорошо документирован.
  • Вопрос задан
  • 11046 просмотров
Пригласить эксперта
Ответы на вопрос 4
ataraev
@ataraev
Ruby, Go
Если в production, то точно Doctrine+Symfony
Ответ написан
Davert
@Davert
Propel или Propel2
офигенная ORM с генерацией запросов.

Ах да, и Doctrine2 нифига не ActiveRecord. Для Rapid Application Development скорее не подходит. Но если у вас сложный проект, то тогда стоит подумать об использовании DataMapper.
Ответ написан
Сначала, наверное, нужно оценить вам ActiveRecord или DataMapper — если второе, то у Doctrine 2 конкурентов вроде нет, даже если ограничиваться не только PHP. Если ActiveRecord то вариантов тьма. Включая первую Doctrine — я бы её в качестве AR выбрал, если б не смущало, что поддержка её вряд ли будет полноценной, а развития скорее всего вообще не будет.

Кстати, спасибо, за то что дали повод заклянуть на сайт Doctrine и увидеть, что у них появился ODM не только для Mongo, но и для Couch (правда в альфе пока). Кстати, это ещё один плюс в сторону Doctrine 2 — больших изменений в коде не потребуется, если захотите перейти на Couch или Mongo.
Ответ написан
hlx
@hlx Автор вопроса
По поводу Doctrine:

1. В доктрине всегда нужно описывать геттеры для получения параметров? нельзя как в yii например
просто обратиться к атрибуту:
echo $user->name;
echo $user->email
все поля в классе описаны как private, думаю что изменение в public это исправит, но не зря же в манулае они описаны именно как приватные данные.
Если еще предположение что я обращаюсь к обычному классу, а не к сгенерированому самой доктироной,
типо
class User extends BaseUser…

2. Не понял «философии» связей.

вот user.php — pastebin.com/j0nAAZrz
вот goods.php — pastebin.com/4rYHRTRz

так вот не получается сделать так:

foreach($user->getGoods() as $good){

}

Warning: Invalid argument supplied for foreach()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы