提取模型关联时的Cakephp控件

时间:2016-06-28 05:25:03

标签: javascript angularjs security cakephp cakephp-2.0

我继承了一个使用Cakephp 2.0和Angular进行各种操作的项目,我正在查找如何进行连接和模型关联。

我有一个与用户表关联的模型,如此

App::uses('AppModel', 'Model');

class Booking extends AppModel {

    public $belongsTo = array(
        'Trainer' => array(
            'className' => 'User',
            'foreignKey' => 'to_user'
        ),
        'Participant' => array(
            'className' => 'User',
            'foreignKey' => 'user'
        )
    );

}

这很有效。但是,我担心每次访问预订时始终获取所有用户表的速度和安全性。大部分数据传递给角度,然后通过javascript显示,我发现一些地方是程序将模型搜索的结果直接传递给angular然后让它处理传播该数据。我担心,如果我添加这些关联,那么我现在可能会将我的用户表传递给包含敏感数据的javascript。

我想知道是否可以通过使用函数调用在运行时添加关联。例如

App::uses('AppModel', 'Model');

class Booking extends AppModel {

    public function getUserInfo(){
        $this->$belongsTo = array(
            'Trainer' => array(
                'className' => 'User',
                'foreignKey' => 'to_user'
            ),
            'Participant' => array(
                'className' => 'User',
                'foreignKey' => 'user'
            )
        );
    }

}

然后在控制器中使用:

$this->loadModel("Booking");
$this->Booking->getUserInfo();

这是为了让您可以控制是否同时拉动关联的表格。

1 个答案:

答案 0 :(得分:0)

你可以Create Associations on the Fly如下,

App::uses('AppModel', 'Model');

class Booking extends AppModel {

    public function getUserInfo(){
    $this->bindModel(
        array('belongsTo' => array(
                'Trainer' => array(
                    'className' => 'User',
                'foreignKey' => 'to_user')),
            'Participant'=> array(
                'className' => 'User',
                    'foreignKey' => 'user' ) )
            );
    return $this->find('all');

    }
}