Yii中的relations方法
来源:互联网 发布:java 继承泛型类 编辑:程序博客网 时间:2024/05/15 23:54
以Blog示例: 重点看注释
User类中的relations方法如下
public function relations(){return array('posts' => array(self::HAS_MANY, 'Post', 'author_id','order'=>'posts.update_time DESC','with'=>'comments:approved', // $user = User::model()->findByPk(1); 这里也查出了每篇post所带的comments//approved是comment的命名空间,可以在这里设置//'together'=>false, 设置这一项,关联查新将被分为几个SQL语句执行,和性能有关系),'postCount'=>array(self::STAT,'Post','author_id','condition'=>'status='.Post::STATUS_PUBLISHED,),);}
Post中的方法如下 : public function relations(){// NOTE: you may need to adjust the relation name and the related// class name for the relations automatically generated below.return array('author'=>array(self::BELONGS_TO,'User','author_id',//'select'=>'id,username,profile', // 关联查询的选项,如果不设置,则默认为*即整个关联记录),'comments'=>array(self::HAS_MANY,'Comment','post_id','condition'=>'comments.status='.Comment::STATUS_APPROVED,'order'=>'comments.create_time DESC'),'commentCount'=>array(self::STAT,'Comment','post_id','condition'=>'status='.Comment::STATUS_APPROVED),); }
Comment中的ralations方法如下:public function attributeLabels() //名字和现实标签的映射数组{return array('id' => 'Id','content' => 'Comment','status' => 'Status','create_time' => 'Create Time','author' => 'Name','email' => 'Email','url' => 'Website','post_id' => 'PostID', //对应的博客ID);}
在控制器中写个方法测试一下结果:
public function actionRQ(){$post = Post::model()->find('id=:id',array(':id'=>7));echo $post->author->username;echo "<hr>";$posts = Post::model()->with('author','comments')->findAll(); //急切加载foreach($posts as $post){echo $post->id." |";foreach($post->comments as $comment){echo $comment->id.": ";echo $comment->content."<br>";}echo $post->author->username."<br>";}echo "<hr>";$user = User::model()->with('posts.comments')->findByPk(1);//$user = User::model()->findByPk(1); 这一句和上一句是一样的,因为在User的relations声明的posts也已经加上了关联查询:with=>'comments'foreach($user->posts as $post){ //嵌套急切加载echo $post->title." (";foreach($post->comments as $comment){echo $comment->id." : ";echo $comment->content."<br>";}echo ")".$post->tags."<br>";}echo "<hr>";$criteria = new CDbCriteria;//$criteria->select = "username";//$criteria->order//$criteria->limit//$criteria->condition//$criteria->params$criteria->with = array('posts.comments',);$users = User::model()->findAll($criteria);foreach($users as $user){ echo $user->username.":<br>";//echo $user->password;foreach($user->posts as $post){ //嵌套急切加载echo $post->title." (";foreach($post->comments as $comment){echo $comment->id." : ";echo $comment->content."<br>";}echo ")".$post->tags."<br>";}}//动态关联查询,也就是在查询的时候覆盖relations中设置的关联的选项echo "<hr>";$user=User::model()->with(array('posts'=>array('order'=>'posts.update_time DESC','with'=>array('comments'=>array('order'=>'comments.id ASC')),//'together'=>false, //关联声明中设置together 选项为false 以便一些表被连接在单独的SQL语句中,分为几个SQL语句执行),))->findByPk(1);echo "demo 的posts数量为:".$user->postCount;echo "<br>";foreach($user->posts as $post){echo $post->id."(";echo $post->title."的评论数量是:".$post->commentCount."<br>";foreach($post->comments as $comment){echo $comment->id." | ";}echo ")";echo "<br>";}}
- Yii中的relations方法
- Yii - relations数据关联中的统计功能
- Yii - relations数据关联中的统计功能
- yii的relations方法的使用
- yii的relations方法的使用
- yii的relations方法的使用
- Yii的relations方法的使用
- yii的relations方法的使用
- yii的relations方法的使用
- yii分析 yii的 view语法和model中的relations
- 关于yii的relations
- 关于yii的relations
- 关于yii的relations
- Yii 多表关联relations
- Yii 多表关联relations
- Yii中relations的用法
- Yii框架relations的使用
- Yii中的save方法
- PostgreSQL学习笔记1之表定义
- Codeforces 20C Dijkstra?
- 用C语言编写可移植程序的注意事项
- UnsupportedClassVersionError: Bad version number in .class file 解决方案
- EZ-USB 68013在WIN7 64位下驱动识别方法
- Yii中的relations方法
- c#泛型继承的里氏原则问题
- PhoneGap之iOS端安装
- VS2005(VS2008)与VC6.0的几点区别
- 解决Jenkins分布式编译iOS代码时,出现"User interaction is not allowed"
- syslog(),openlog(),closelog()
- 与Eliza的第一次谈话
- iotop
- 黑马程序员——day13数据库分页