CakePHP按用户的业务帐户过滤查询

时间:2014-06-13 21:54:49

标签: cakephp user-accounts cakephp-2.4

我是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。)要显示所有帐户,“查询”此过滤器并将其应用于每个模型的最佳方法是什么。或者是由Model?...或ACL / Auth?

自动完成的

3。)要显示一个帐户,在会话中存储ID仍然是最好的方法吗? ......或者我应该考虑每个订单,发票和文件控制器中的一系列新操作?

1 个答案:

答案 0 :(得分:0)

我将通过CakePHP cookbook链接为您提供支持,以澄清您的所有疑问: 首先,您应该阅读linking models

接下来就是在CakePHP conventions

之后创建正确的数据库和表格

另一步是"baking" your models/controllers/ views

在该步骤之后,您只需要play arround with data you get from your models

老实说,如果你正确地使用corect foreing键名来创建你的数据库,那么你就不需要对任何关系进行编码,而Cake会通过交互式shell检测并建立关系(你会被问到是否希望控制台创建关系你通过蛋糕烘烤)。

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

将为您提供给定ModelName的所有数据以及所有相关数据, 使用

$this->ModelName->recursive=-1 

将使您的模型仅从ModelName中检索数据,而无需任何相关数据。

在实践中,有些事情可能会对你开箱即用,但有些事情你必须简单地实施。希望有所帮助。