Я хочу получить информацию из базы данных, используя объекты.
Мне действительно нравится этот подход, потому что это больше ООП:
$user = Doctrine_Core::getTable('User')->find(1);
echo $user->Email['address'];
echo $user->Phonenumbers[0]->phonenumber;
вместо:
$q = Doctrine_Query::create()
->from('User u')
->leftJoin('u.Email e')
->leftJoin('u.Phonenumbers p')
->where('u.id = ?', 1);
$user = $q->fetchOne();
echo $user->Email['address'];
echo $user->Phonenumbers[0]['phonenumber'];
проблема в том, что первый использует 3 запроса (3 разных таблицы), а второй использует только 1 (и поэтому является рекомендуемой техникой).
но я чувствую, что это разрушает объектно-ориентированный дизайн. причина ORM предназначен для того, чтобы дать нам подход ООП, чтобы мы могли сосредоточиться на объектах, а не на реляционной базе данных. но теперь они хотят, чтобы мы вернулись к использованию SQL-подобного шаблона.
нет способа получить информацию из нескольких таблиц, не используя DQL?
приведенные выше примеры взяты из документации:
Доктрина