您只需要在各个模型中指定模型关联。将以下文件保存在 app/Model 文件夹中。
//User Model: User.php
App::uses('AppModel', 'Model');
class User extends AppModel
{
public $name = 'User';
public $useTable = 'users';
public $primaryKey = 'id';
public $hasOne = array('Profile' => array(
'className' => 'Profile',
'foreignKey' => 'user_id'
)
);
public $hasMany = array('Paper' => array(
'className' => 'Paper',
'foreignKey' => 'user_id'
)
);
}
//Profile Model: Profile.php
App::uses('AppModel', 'Model');
class Profile extends AppModel
{
public $name = 'Profile';
public $useTable = 'profiles';
public $primaryKey = 'id';
public $belongsTo = array('User' => array(
'className' => 'User',
'foreignKey' => 'user_id'
)
);
}
//Paper Model: Paper.php
App::uses('AppModel', 'Model');
class Paper extends AppModel
{
public $name = 'Paper';
public $useTable = 'papers';
public $primaryKey = 'id';
public $belongsTo = array('User' => array(
'className' => 'User',
'foreignKey' => 'user_id'
)
);
}
您可以通过一个查询轻松找到用户详细信息及其个人资料详细信息以及所有纸张信息:
$result = $this->User->find('all', array('conditions' => array()));
如果您想通过论文的 user_id 找出用户的个人资料详细信息,那么您应该编写以下内容:
$result = $this->User->Paper('all', array('conditions' => array('Paper.user_id' => $user_id),
'recursive' => '2'));
您可以使用以下命令检查输出:pr($result);die;