用纸的user_id字段找到用户的个人资料信息?

用纸的user_id字段找到用户的个人资料信息?

问题描述:

我有3个表在CakePHP的2应用程序:

用户
用纸的user_id字段找到用户的个人资料信息?

  • ID
  • 电子邮件

型材

  • USER_ID

论文

  • ID
  • 标题
  • USER_ID

我将显示此:

------------------------------------------------------------------ 
| user->ID | profile -> name | paper -> ID | paper -> title | 
------------------------------------------------------------------ 
| 123 |  jack   |  12  |  test1  | 
------------------------------------------------------------------ 
| 125 |  jonn   |  15  |  mypaper | 
------------------------------------------------------------------ 
etc. 

也许用户没有任何纸张。
用户拥有一个配置文件。
用户有许多纸张。

我怎么能在user_controller的操作中做到这一点?

您只需要在相应的模型中指定模型关联。将以下文件保存在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;

+0

谢谢@Arun,但$ this-> User-> Paper-> find(...)。但不工作。 – Chalist

+0

我测试这个,并有工作: $ this->用户 - >找到(...)没有'递归'=>'2',并有工作。 感谢您的答复哥们。 – Chalist

+1

谢谢,它总是我的乐意帮助。 :) –