Хорошо, я попытаюсь помочь с "научить человека ловить рыбу".
Модели тортов представляют собой таблицы базы данных. У каждой модели может быть определено ассоциаций , таких как assignTo, hasMany, hasOne и т. Д. Когда вы определяете ассоциацию, торт распознает ее и получает все необходимые данные.
Например, допустим, у вас есть модельный пост и модельный комментарий. Если вы установите связь между ними (Post-hasMany-Comment и Comment-ownTo-Post), торт будет работать по волшебству каждый раз, когда вы делаете Post-> find () или Comment-> find ()
Так что это значит? Если вы делаете что-то вроде этого:
$ data = $ this-> Post-> findByTitle ('заголовок вашего сообщения');
переменная $ data будет содержать не только ваши данные Post, но и все связанные комментарии. Вы всегда можете увидеть, что там, позвонив по номеру debug($data);
Уровень «глубинного» торта с соответствующими данными может быть установлен с помощью свойства / параметра recursive или с помощью встроенного поведения Containable .
Еще одно преимущество определения связей между моделями (чтобы ответить на ваш комментарий к ответу Роба) состоит в том, что вам не нужно помещать все свои модели в переменную $ using var. На самом деле, это было бы неправильно .
Верьте или нет, но как только вы правильно определите свои ассоциации, это сработает:
class PostsController extends AppController
{
// not really needed, cake detects it automagically
var $uses = array('Post');
function index()
{
$comments = $this->Post->Comment->find('all');
}
}
Сладко, не правда ли?
В вашем случае это будет примерно так:
$this->Table1->find
(
'all',
array
(
'conditions' => array
(
'Table2.foreign_key_id_table3' => X
)
)
);
Есть много других полезных советов, когда вы работаете со встроенными функциями и классами тортов, поэтому я советую вам потратить некоторое время на то, чтобы правильно выучить торт, это облегчит вашу жизнь.