2013-01-25 36 views
1

一個forign鍵關聯的兩個表我有兩個表命名爲登錄名和userDetail檢索數據從與在CakePHP

     Login 

         login_id 
         uname 
         pswd 
         userdetail_id 

     userdetails 

          userdetail_id 
          name 
          address 
          email 

登錄表中userDetail表包含userdetails_id。我想從登錄表和userDetail表中的所有數據,並將其保存到變量 如果有誰知道,請回答我......

+0

你的意思是如何做一個JOIN查詢來獲取所有的數據? – Anton

回答

4

首先,您的表結構必須如下。

logins Table. 
    Id auto_increment 
    username 
    password
userDetails Table. 
    Id auto_increment 
    user_id 
    name 
    address 
    etc...

現在模型爲每個表會。

登錄

<?php 
class Login extends AppModel 
{ 
    var $name = 'User'; 

    var $hasMany = array 
    (
     'UserDetail' => array 
     (
      'className' => 'UserDetail', 
      'foreignKey' => 'user_id', 
      'dependent' => false, 
      'conditions' => '', 
      'fields' => '', 
      'order' => '', 
      'limit' => '', 
      'offset' => '', 
      'exclusive' => '', 
      'finderQuery' => '', 
      'counterQuery' => '' 
     ) 
} 
?>

UserDetail

<?php 
class UserDetail extends AppModel 
{ 
    var $name = 'UserDetail'; 

    var $belongsTo = array 
    (
     'User' => array 
     (
      'className' => 'User', 
      'foreignKey' => 'user_id', 
      'dependent' => false, 
      'conditions' => '', 
      'fields' => '', 
      'order' => '', 
      'limit' => '' 
     ) 
} 
?>

最後在控制器,你需要獲取賬戶信息。

$login_detail = $this->Login->find('all');

您將看到導致$login_detail userDetail表中的記錄。 在控制器中使用

pr($login_detail);
以查看它的行動。

乾杯。 隨意問。

-1

此任務的查詢是:

SELECT Login.*, name,address,email 
     FROM Login JOIN userdetails 
     ON Login.userdetail_id=userdetails.userdetail_id 

這個查詢的結果可以通過在cakephp中循環來保存到變量中。

+1

爲什麼不遵循cakephp約定。如果我們不想使用cakephp規則,那麼不需要使用它corePHP對於這個工作起來也不錯...是不是...不要把這個人當作個人,但我只是不喜歡直接使用查詢,而蛋糕是這樣的許多方法來實現這種任務... –

+0

感謝每一個................... –

2

確保ContainableBehavior已啓用。之後,您可以使用以下查詢:

$login = $this->Login->find('first', array(
    'contain' => array(
     'Userdetail.userdetail_id' 
     'Userdetail.name', 
     'Userdetail.address', 
     'Userdetail.email' 
    ), 
    'fields' => array(
     'Login.login_id' 
     'Login.uname', 
     'Login.pswd' 
    ), 
    'conditions' => array(
     'Login.login_id' => 1 
    ) 
));