表一 (city)
id name code
1 北京 0001
2 上海 0002
表二 (user)
id username citycode
1 小李 0001
2 小王 0001
3 小红 0002
第二个表的citycode字段是第一个表的code字段相对应
在YII的model里要怎么写这两个model的relations要怎么写呢?
city表的对应model (City.php)
<?phpclass City extends CActiveRecord{ public static function model($className=__CLASS__) { return parent::model($className); } public function tableName() { return 'city'; } public function relations() { return array( //'user' => array(self::HAS_MANY, 'User', 'code'),这里不知道要怎么写,这样写不知道对不对? ); }//…………}
<?phpclass User extends CActiveRecord{ public static function model($className=__CLASS__) { return parent::model($className); } public function tableName() { return 'user'; } public function relations() { return array( //'city' => array(self::BELONGS_TO, 'City', 'citycode'),这里不知道要怎么写,这样写不知道对不对? ); }//…………}
没人帮解决吗?
我也是个新手,说说我的看法!
首先你的表就有问题,作为两个表产生 关联是因为有 外键约束。而你的第一个表中的字段 citycode不是主键,那么就不能作为外键。就谈不上,两个表之间的联系了。
如果,你的表创建如下:
create table city(
cityCode varchar(25) not null primary key,
name varchar(128) not null,
);
create table user(
id int(11) primary key,
name varchar(128) not null,
cityCode varchar(25) not null,
foreign key(cityCode) references city(cityCode),
);
建立了外键之后,
描述 关联关系:
User 中:
return array('user'=>array(self::BELONGS_TO, 'City', 'cityCode'));
City中:
return array('city'=>array(self::HAS_MANY, 'User', 'cityCode'));