Доктрина $ record-> get () с присоединением - PullRequest
1 голос
/ 23 ноября 2011

Я использую следующий фрагмент кода для получения тегов магазина:

$tags = $this->getObject()->get('Tag');

$this->getObject() возвращает объект Shop, а ->get('Tag') возвращает массив Tag объектов, связанных с этим магазином.

Вот как устроена моя база данных: 1 Shop = 1 или более Tag и 1 Tag = 1 Tag_Translation.

Что я хотел бы сделать, так это получить вместо массива Tag объектов и массива Tag объектов с их переводами (другими словами, своего рода JOIN).

Как это возможно, сохраняя тот же синтаксис? Большое спасибо, я новичок в Doctrine и ORM в целом, у меня не было бы проблем с MySQL, но здесь ...

1 Ответ

0 голосов
/ 25 ноября 2011

Вы можете решить эту проблему следующим образом

a) Вы можете вызвать функцию Tag Models, когда вам нужен перевод

$tag->getTagTranslation()

b) Или вы можете перезаписать функцию getTag () вашего магазина и создать свой собственный запрос с использованием DQL, как предложено @ greg0ire, для получения перевода и пометки сразу

public function getTag(){
    return Doctrine_Query::create()
           ->from("Tag t")
           ->leftJoin("t.TagTranslation tt")
           ->addWhere("t.shop_id = ?", $this->getId())
}

(Конечно, вы можете назвать новую функцию, например, getTagsWithTranslation ())

Предполагается, что вы создали schema.yml с правильными отношениями!

...