我有两张桌子:
用户包含(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
中编写了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
。
答案 0 :(得分:0)
你已经为每个模型关联声明了两个关系,当你应该只有一个关系时。
像这样: 在userDetail Model中:
public $hasMany = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id'
)
);
因此,在用户模型中:
public $belongsTo = array(
'UserDetail' => array(
'className' => 'UserDetail',
'foreignKey' => 'user_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
查看documentation了解详情。
答案 1 :(得分:0)
要记住:
一对一关系 - hasOne - 用户表有一个 users_detail 。
属于 - 用户详细信息表属于用户表。
因此,两个表之间的关系是hasone和belongssto。
在下面找到正确的代码。
用户模型:
public $hasOne = array('UsersDetail' => array(
'className' => 'UsersDetail',
'foreignKey' => 'user_id')
);
UsersDetail模型
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
谢谢,