Итак, у меня есть две таблицы: X и Y.
schema.yml выглядит так:
X:
columns:
something: { type: string(255), notnull: true }
y_id: { type: integer, notnull: true }
relations:
Y: { onDelete: CASCADE, local: y_id, foreign: id, foreignAlias: xs }
Y:
columns:
something: { type: string(255), notnull: true }
И в моем XTable есть:
class XTable extends Doctrine_Table
{
function getXesWithYs()
{
return $this->createQuery("x")->leftJoin("x.Y y")->execute();
}
}
Сгенерированный запрос фактически выбирает и x. *, И y. *, Но когда я пытаюсь использовать данные Y, он выполняет дополнительный запрос для каждой строки, выбирающей Y, где y.id = x.y_id.
Так что, если я сделаю:
echo $results[0]->Y->something;
Doctrine снова запустит дополнительный запрос, извлекающий данные Y.
Это происходит только один раз за строку Y. Если я использую его снова, он не будет загружен в третий раз, но если я использую $result[1]
's, я получу другой запрос.