Запрос $ data findAll в CakePHP проверяет значения из второй таблицы - PullRequest
0 голосов
/ 13 января 2009

CakePHP поставил меня в тупик, как запрашивать базу данных в CakePHP и возвращать данные в $ data только в том случае, если в таблице запросов $ data [id] есть соответствующий [sub_id] во второй таблице

стандартный запрос:

$data = $this->Table1->findAll(array("Table1.deleted" => "0"), null, "Table1.id DESC", 25, null, 1);

Но я хочу, чтобы значения помещались в $ data только тогда, когда $ data ['Table1'] ['id'] найдено в ['table2'] ['sub_id']

Спасибо!

Ответы [ 3 ]

1 голос
/ 13 января 2009

Если вы правильно настроили свои отношения, он должен сделать это автоматически. Можете ли вы вставить настройки модели отношений для Таблицы1 и Таблицы2?

0 голосов
/ 14 марта 2009

В модели в массиве отношений добавьте:

$hasMany = array(
.....
'required' => true
....
);

Это должно сделать внутреннее соединение в sql, а не левое соединение. Надеюсь, это поможет.

0 голосов
/ 13 января 2009

Сверхновая -

Пожалуйста, поясните мне одну вещь: вы пишете, что хотите, чтобы значения помещались в $ data только тогда, когда table1.id найден в table2.sub_id. Вы имеете в виду, что table2.sub_id - это внешний ключ, ссылающийся на table1?

Я думаю, что Бо прав: если у вас есть правильно связанные модели, использующие переменную HABTM или ownTo и т. Д., FindAll должен автоматически извлечь связанные записи из таблицы 2.

Последнее замечание: на ассоциации моделей влияет значение Model-> recursive. Если вы изменили значение рекурсивного свойства в своем коде, это изменило бы, насколько глубоко разрешены отношения модели для данного запроса.

НТН!

...