我有两个表:
用户包含(标识,名称,电子邮件)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以获得更多详细信息。