1

login と userDetail という名前の 2 つのテーブルがあります

                        Login

                        login_id
                        uname
                        pswd
                        userdetail_id

                       userdetails

                          userdetail_id
                          name
                          address
                          email

login テーブルには、userDetail テーブルに userdetails_id が含まれています。LoginテーブルとuserDetailテーブルから全てのデータを取得して変数に保存したいのですが、わかる方いましたら回答お願いします......

4

3 に答える 3

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' => ''
        )
}
?>

ユーザー詳細

<?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');

結果の userDetail テーブル レコードが表示されます$login_detail。使用する

pr($login_detail);
コントローラで実行して動作を確認します。

乾杯。遠慮なく尋ねてください。

于 2013-01-25T07:46:56.810 に答える
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
    )
));
于 2013-01-25T07:45:27.027 に答える
-1

このタスクのクエリは次のようになります。

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

このクエリの結果は、cakephp でループすることによって変数に保存できます。

于 2013-01-25T07:31:38.380 に答える