我有两个表:


用户包含(标识,名称,电子邮件)id是主键。
users_details包含(user_id,地址,城市,邮政编码)user_id是用户表的外键。


users.id=users_details.user_id

我在User.php中写了这样的用户模型

class User extends AppModel {

public $name = 'User';
public $displayField = 'name';
    public $primaryKey = 'id';
    var $belongsTo = 'UsersDetail';
    public $hasone = array(
    'UsersDetail' => array(
        'className' => 'UsersDetail',
        'conditions' => '',
        'fields' => '',
                    'foreignKey' => 'id',
        'order' => '',
                    'dependent' => true
      )
  );
}


我在UsersDetail.php中编写了usersdetail模型

class UsersDetail extends AppModel {

public $name = 'UsersDetail';
public $displayField = 'name';

    public $belongsTo = array( 'User' =>
       array( 'className' => 'User','foreignKey' => 'user_id') );

    public $hasone = array(
    'User' => array(
        'className' => 'User',
        'conditions' => '',
        'fields' => '',
                    'foreignKey' => 'id',
        'order' => '',
                    'dependent' => true
    ));
}


我想使用带有条件的联接从表中获取数据。 users.id=users_details.user_id

最佳答案

您应该为每个模型关联声明两个关系,而每种方式都应该声明一个。

像这样:
在userDetail模型中:

public $hasMany = array(
        'User' => array(
            'className' => 'User',
            'foreignKey' => 'user_id'

        )
    );


因此,在用户模型中:

public $belongsTo = array(
        'UserDetail' => array(
            'className' => 'UserDetail',
            'foreignKey' => 'user_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        )
    );


查看documentation以获得更多详细信息。

10-06 08:13