我继承了一个使用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();
这是为了让您可以控制是否同时拉动关联的表格。
答案 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');
}
}