Я присоединил наследование таблицы (позвонил на Action) и мне нужно получить все записи Action, которые удовлетворяют условию, но поля находятся в подклассах? Есть ли способ получить доступ к полям подкласса без записи Native Query, но использовать DQL? (или queryBuilder)?Doctrine2 - Отображение наследования, запрос подклассов
ответ
Если у вас есть подкласс, вы можете напрямую запросить этот подкласс. Свойства родительского класса будут автоматически унаследованы (duh). Я считаю, что это то, что вы ищете (на основе того, как я реализовал наследование таблицы классов).
class User{
private $id;
private $username;
}
class Merchant extends User{
private $bizname;
private $isActive;
}
Теперь в соответствии с вами, если у меня есть, чтобы получить активные торговцы, я хотел бы сделать следующее, и это работает для меня:
$qb->select('m.bizname')
->from('Merchant','m')
->where('m.isActive = :flag')
->setParameter('flag',TRUE);
Да, это работает, но я хочу -> from ('Пользователь', 'u') -> andWhere ('userSubClass.isActive: flag'), вот в чем проблема. – CappY
В приведенном выше запросе даются все пользователи, в которых продавец активен. Подумайте об этом .., когда вы хотите выбрать пользователей, где 'subclass active' .. это означает, что он вернет только пользователь подкласса типа. Поэтому выбор продавцов которые активны, возвращают вам все свойства пользователя, а также продавца – Broncha
Да, но у меня есть 5 разных подклассов, и у каждого подкласса есть другое условие, чтобы проверить, активен ли он. Например: – CappY
ли поля принадлежат только одному классу, или в течение нескольких подклассы для запроса? –
все подклассы имеют отношение к другому классу, но свойство всегда одинаково. – CappY
Я не понимаю, что вы пытаетесь сделать точно. Можете ли вы опубликовать небольшой экземпляр объектов и что вы хотите запросить? –