Maison > développement back-end > tutoriel php > yii的relations要怎么写?熟悉YII的朋友们帮看看

yii的relations要怎么写?熟悉YII的朋友们帮看看

WBOY
Libérer: 2016-06-23 14:27:53
original
973 Les gens l'ont consulté

表一  (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'),这里不知道要怎么写,这样写不知道对不对?		);	}//…………}
Copier après la connexion


user表的对应model (User.php)
<?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'),这里不知道要怎么写,这样写不知道对不对?		);	}//…………}
Copier après la connexion



按我上面的写法,在视图(view)文件里 使用如:$data->city->name  或 $data->user->username会出错。
初学YII 对relation不知道要怎么写,麻烦知道的朋友指导下,谢谢了!


回复讨论(解决方案)

没人帮解决吗?

我也是个新手,说说我的看法!
首先你的表就有问题,作为两个表产生 关联是因为有 外键约束。而你的第一个表中的字段 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'));

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal