cakephp найти все с несколькими таблицами

Моя проблема в том, что я пытаюсь получить данные из 5 разных таблиц, все таблицы связаны, и я могу создать sql-запрос, чтобы получить то, что хочу. Вот.

SELECT accounts.account_number, trailers.id, members.first_name, balances.balance, loans.loan_description, delinquent_loans.days_delinquent, delinquent_loans.amount_delinquent, delinquent_loans.next_contact, delinquent_loans.last_contact
FROM accounts, trailers, members, balances, accounts_trailers, loans, delinquent_loans
WHERE delinquent_loans.loan_id = loans.id
AND loans.accounts_trailer_id = accounts_trailers.id
AND accounts_trailers.account_id = accounts.id
AND accounts_trailers.trailer_id = trailers.id
AND accounts.member_id = members.id
AND balances.accounts_trailer_id = accounts_trailers.id
AND members.first_name
REGEXP '^[a-l]'
ORDER BY delinquent_loans.days_delinquent DESC

Чего я не понимаю, так это того, как правильно выполнить этот запрос в cakePHP. Я уверен, что могу просто использовать функцию запроса и вставить предыдущий запрос, но я хотел бы сделать это правильно.

public function listAL(){
    $this->recursive = -1;
    $conditions = array('`DelinquentLoan`.`loan_id` = `Loan`.`id`', 
                                '`Loan`.`accounts_trailer_id` = `AccountsTrailer`.`id`', 
                                '`AccountsTrailer`.`account_id` = `Account`.`id`', 
                                '`AccountsTrailer`.`trailer_id` = `Trailer`.`id`', 
                                '`Account`.`member_id` = `Member`.`id`', 
                                '`Balance`.`accounts_trailer_id` = `AccountsTrailer`.`id`', 
                                '`Member`.`first_name` regexp \'^[a-l]\'');
    $fields = array('`Account`.`account_number`, 
                            `Trailer`.`id`, `Member`.`first_name`, 
                            `Balance`.`balance`, 
                            `Loan`.`loan_description`, 
                            `Delinquent_loan`.`days_delinquent`, 
                            `Delinquent_loan`.`amount_delinquent`, 
                            `Delinquent_loan`.`next_contact`, 
                            `Delinquent_loan`.`last_contact`');
    return $this->find('all', array('fields'=> $fields, 
                                                'order'=>array('`DelinquentLoan`.`days_delinquent` desc'),
                                                'conditions'=> $conditions));
}

Любая помощь в этом приветствуется. Я смотрел на других сайтах и ​​форумах, но безрезультатно. Спасибо.


person Jamie Holcomb    schedule 14.12.2011    source источник


Ответы (2)


Немного поздно, но я думаю, что это то, что вы ищете:

Model::saveAssociated(array $data = null, array $options = array())

Найдено в поваренной книге Сохранение ваших данных.

person Mike S.    schedule 12.04.2012

Если ассоциации между моделями сделаны хорошо, я не вижу проблем, просто используя простой поиск ('все',...), возможно, вам следует лучше указать, что вы пытаетесь сделать с вашими моделями и как ассоциации между ними.

Вероятно, вам может помочь поведение Containable. Это для вырезания и фильтрации информации при выполнении «поиска»:

http://book.cakephp.org/2.0/en/core-libraries/behaviors/containable.html

person capsula    schedule 07.06.2012