#cakephp #user-accounts #cakephp-2.4
#cakephp #учетные записи пользователей #cakephp-2.4
Вопрос:
Я новичок в CakePHP 2.4 и пытаюсь концептуально понять, на правильном ли я пути, прежде чем приступить к созданию следующего.
По умолчанию, когда пользователь впервые входит в свою онлайн-учетную запись, он видит заказы, счета и документы для ВСЕХ УЧЕТНЫХ ЗАПИСЕЙ, к которым у него есть доступ. Используя выпадающий список учетных записей и кнопку «Перейти», он может фильтровать заказы, счета и документы только для ОДНОЙ УЧЕТНОЙ ЗАПИСИ.
В настоящее время, до CakePHP, все это обрабатывается в логике запросов. Связь между учетной записью пользователя (N: N) находится в базе данных. Любой активный Account_Id сохраняется в СЕАНСЕ. Что такое CakePHP для этого?
Модель выглядит следующим образом:
User hasAndBelongsToMany Accounts
Account hasMany Orders
Account hasMany Invoices
Account hasMany Documents
1.) Должен ли я кодировать отношения между пользователями и учетными записями в модели (hasAndBelongsToMany) или в компоненте ACL / Auth (пользователь — ARO, учетная запись — ACO)?
2.) Чтобы показать ВСЕ УЧЕТНЫЕ ЗАПИСИ, каков наилучший способ «запросить» этот фильтр и применить его к каждой модели. Или это делается автоматически моделью ?… или по ACL / Auth?
3.) Для отображения ОДНОЙ УЧЕТНОЙ ЗАПИСИ сохранение идентификатора в сеансе по-прежнему является лучшим подходом? …или я должен думать о новом наборе действий в каждом из контроллеров заказов, счетов и документов?
Ответ №1:
Я поддержу вас набором ссылок на CakePHP cookbook, в котором разъясняются все ваши запросы: прежде всего, вы должны прочитать о моделях компоновки.
Следующим шагом является создание правильной базы данных и таблиц в ней в соответствии с соглашениями CakePHP
Еще одним шагом является «выпекание» ваших моделей / контроллеров / представлений
После этого шага все, что вам нужно сделать, это просто поиграть с данными, которые вы получаете от своих моделей
Честно говоря, вам вообще не нужно кодировать какие-либо отношения, если вы просто правильно создадите свою базу данных с помощью corect foreing ключевых имен, которые Cake обнаружит и построит отношения через интерактивную оболочку (вас спросят, хотите ли вы, чтобы консоль создавала для вас отношения через cake bake ).
$this->ModelName->find('all')
предоставит вам все данные с заданным именем модели, а также все связанные данные,
используя
$this->ModelName->recursive=-1
заставит вашу модель извлекать только данные из ModelName без каких-либо связанных данных.
На практике некоторые вещи, вероятно, будут работать для вас из коробки, но некоторые вещи вам придется просто реализовать. Надеюсь, это поможет.
Комментарии:
1. Спасибо scx. Конечно, я довольно много читал о cakephp. Я все еще не понимаю, как я могу применить это к моему примеру пользователей и учетных записей. Для описанной мною функциональности должны ли учетные записи создаваться в Auth / ACL? Каков наилучший способ применить фильтр ко ВСЕМ УЧЕТНЫМ ЗАПИСЯМ или К ОДНОЙ УЧЕТНОЙ ЗАПИСИ? Спасибо за ваш быстрый ответ!