Cakephp: Как запросить более 2 таблиц без объединения - PullRequest
0 голосов
/ 24 февраля 2012

Я на моей модели с именем " Objekt ", и она имеет следующие отношения:

var ??? = array(
        'ObjektArtenInternet' => array(
            'className' => 'ObjektArtenInternet',
            'foreignKey' => 'OBI_ID',
            //'conditions' => '',
            'fields' => 'OBI_SORTIERUNG',
            //'order' => ''
        )
    );

Что я хочу сейчас сделать, так это утверждение:

SELECT DISTINCT detailobjekt.OBI_ID, OBI_UET_BESCHREIBUNG, OBI_SORTIERUNG FROM detailobjekt, objektarten_internet ГДЕ detailobjekt.OBI_ID = objektarten_internet.OBI_ID

Но я не могу понять, как установить правильное отношение, чтобы сделать этот выбор. С $belongsTo or $hasOne я всегда получаю соединение, которое мне не нужно в этом случае, я просто хочу запросить более 2 таблиц, как в примере выше.

Как я могу это сделать? Пожалуйста, помогите мне. Спасибо!

1 Ответ

0 голосов
/ 25 февраля 2012

CakePHP не поддерживает ORM для этого типа запроса. Никакие отношения, которые вы установили, не напишут такой запрос. У вас есть один из двух вариантов.

1 - используйте ORM и разрешите СОЕДИНЕНИЕ на основе отношения.

2 - написать свой собственный запрос, используя $ this-> Model-> query ();

Вам придется взвесить преимущества / недостатки любого варианта. Но почему вы не хотите присоединиться? Что не так с разрешением объединения?

Кроме того, MySQL в любом случае выполняет эквивалент INNER JOIN по вашему запросу. Этот запрос синтаксически совпадает с вашим:

SELECT *
FROM <firstTable> a INNER JOIN <anotherTable> b
ON a.<someColumn> = b.<anotherColumn>
...