蛋糕有一个属于加入不工作


cakephp hasone and belongs join not working

我有两个表:

  • 用户包含(id、姓名、电子邮件)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中编写了用户详细信息模型

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

查看文档以了解更多详细信息。

  • 用户有(id,name,email)id是主键
  • users_details有(user_id,地址,城市,邮政编码)user_id是用户表的外键。手段

需要记住的要点:

  • 一对一关系-hasOne-用户表有一个users_tail

  • belongto-userdetails表属于User表。

因此,这两张表之间的关系是hasone和belongsto。

在下面找到正确的代码。

用户型号:

public $hasOne = array('UsersDetail' => array(
                       'className' => 'UsersDetail',
                       'foreignKey' => 'user_id')
                       );

用户详细型号

public $belongsTo = array('User' => array(
                          'className' => 'Users',
                          'foreignKey' => 'id',
                          'conditions' => '',
                          'fields' => '',
                          'order' => '')
                          );

其精确地提供连接。您可以添加条件,在集合中排序。

输出查询

SELECT `User`.`id`, `User`.`first_name`, `User`.`last_name`, `User`.`email`, `User`.`mobile`, `User`.`pswd`, `UsersDetail`.`user_id`, `UsersDetail`.`address`, `UsersDetail`.`city`, `UsersDetail`.`state`, `UsersDetail`.`postcode`, `UsersDetail`.`dob`, `UsersDetail`.`photo` FROM `cakedemo`.`users` AS `User` LEFT JOIN `cakedemo`.`users_details` AS `UsersDetail` ON (`UsersDetail`.`user_id` = `User`.`id`) WHERE 1 = 1

谢谢你,

相关文章: