当前位置:K88软件开发文章中心编程工具CodeSmith → 文章内容

CodeSmith 为 Yii Framework 创建生成 ActiveRecord 的代码模板

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-24 10:16:41

onProperty in association.Properties) { retString+="'"+associationProperty.ForeignProperty.GetSafeName()+"',"; } retString+="),"; }else{ foreach (AssociationProperty associationProperty in association.Properties) { retString+="'"+associationProperty.ForeignProperty.GetSafeName()+"'),"; } } return retString;}public string GetBelongToKey(IAssociation association){ string retString=string.Empty; if(association.Properties.Count>1) { retString="array("; foreach (AssociationProperty associationProperty in association.Properties) { retString+="'"+associationProperty.Property.GetSafeName()+"',"; } retString+="),"; }else{ foreach (AssociationProperty associationProperty in association.Properties) { retString+="'"+associationProperty.Property.GetSafeName()+"'),"; } } return retString;}public string GetManyToManyKey(IAssociation association){ string retString="'"+association.ForeignEntity.GetSafeName()+"("; foreach (AssociationProperty associationProperty in association.Properties) { retString+=associationProperty.ForeignProperty.GetSafeName()+","; } IAssociation intermidateAssociation=association.IntermediaryAssociation; if(intermidateAssociation!=null) { foreach (AssociationProperty associationProperty in intermidateAssociation.Properties) { retString+=associationProperty.ForeignProperty.GetSafeName()+","; } } retString=retString.Substring(0,retString.Length-1); retString+=")'),"; return retString;}</script>然后 generated output 就可以为数据库的表生成对应的 AR 类,比如生成的 Track 类class Track extends CActiveRecord{ public static function model($className=__CLASS__) { return parent::model($className); } public function tableName() { return 'track'; } public function relations() { return array( 'album'=>array(self::BELONGS_TO,'Album','AlbumId'), 'genre'=>array(self::BELONGS_TO,'Genre','GenreId'), 'mediatype'=>array(self::BELONGS_TO,'Mediatype','MediaTypeId'), 'invoicelines'=>array(self::HAS_MANY,'Invoiceline','TrackId'), 'playlists'=>array(self::MANY_MANY,'Playlist','playlisttrack(TrackId,PlaylistId)'), ); }}如果实在看不懂本例也无所谓,可以直接使用该模板,只要设置数据源 ,如果数据库的表有前缀,比如Wordpress 的表有 wp_ 可以设置表前缀(不是必须的)本例下载 ,如果需要使用本例的模板,直接把项目中 protected 下的codesmith 目录拷贝到你自己的项目中,然后为 codesmith.csp 配置数据源(或者还有表前缀),然后生成代码即可。本例下载

上一页  [1] [2] 


CodeSmith 为 Yii Framework 创建生成 ActiveRecord 的代码模板