我有两个表:
-
用户包含(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
谢谢你,