CakePHP фильтрует запросы по бизнес-аккаунтам пользователей

Я новичок в CakePHP 2.4 и пытаюсь концептуально понять, на правильном ли я пути, прежде чем начать строить следующее.

По умолчанию, когда Пользователь впервые входит в свою онлайн-учетную запись, он видит Заказы, Счета и Документы для ВСЕХ АККАУНТОВ, к которым у него есть доступ. Используя раскрывающийся список «Учетная запись» и кнопку «Перейти», он может фильтровать заказы, счета и документы только для ОДНОЙ УЧЕТНОЙ ЗАПИСИ.

В настоящее время, до CakePHP, все это обрабатывается в логике запросов. Отношение «пользователь-аккаунт» (N:N) находится в базе данных. Любой активный Account_Id хранится в SESSION. Что такое CakePHP для этого?

Модель выглядит так:

User hasAndBelongsToMany Accounts
Account hasMany Orders
Account hasMany Invoices
Account hasMany Documents

1.) Должен ли я кодировать отношения между пользователями и учетными записями в модели (hasAndBelongsToMany) или в компоненте ACL/Auth (пользователь — это ARO, учетная запись — это ACO)?

2.) Чтобы показать ВСЕ АККАУНТЫ, как лучше всего «запросить» этот фильтр и применить его к каждой модели. Или это делается автоматически Моделью?... или ACL/Auth?

3.) Чтобы показать ОДНУ АККАУНТ, сохранение идентификатора в сеансе по-прежнему является лучшим подходом? ... или мне следует подумать о новом наборе действий в каждом из контроллеров заказов, счетов и документов?


person user3739152    schedule 13.06.2014    source источник


Ответы (1)


Я поддержу вас набором ссылок на поваренную книгу CakePHP, которая разъяснит все ваши вопросы: Прежде всего, вы должны прочитать о связывание моделей.

Далее необходимо создать правильную базу данных и таблицы в соответствии с соглашениями CakePHP

Еще один шаг — "запекание" ваших моделей/ контроллеры/представления

После этого шага все, что вам нужно сделать, это просто поэкспериментировать с данными, которые вы получить от ваших моделей

Честно говоря, вам вообще не нужно кодировать какие-либо отношения, если вы просто правильно создадите свою базу данных с правильными именами внешних ключей, которые Cake обнаружит и построит отношения через интерактивную оболочку (вас спросят, хотите ли вы, чтобы консоль создала отношения для вас через торт выпекать ).

$this->ModelName->find('all') 

предоставит вам все данные данного ModelName, а также все связанные данные, используя

$this->ModelName->recursive=-1 

заставит вашу модель извлекать только данные из ModelName без каких-либо связанных данных.

На практике некоторые вещи, вероятно, будут работать для вас из коробки, но некоторые вещи вам придется просто реализовать. Надеюсь, это поможет.

person scx    schedule 13.06.2014
comment
Спасибо scx. Конечно, я довольно много читал о cakephp. Я все еще не понимаю, как я могу применить это к моему примеру пользователей и учетных записей. Для описанной мной функциональности учетные записи должны быть встроены в Auth/ACL? Как лучше применить фильтр для ВСЕХ АККАУНТОВ или ОДНОГО АККАУНТА? Спасибо за ваш быстрый ответ! - person user3739152; 16.06.2014