`
stevecj
  • 浏览: 106075 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

转:关于yii的relations

    博客分类:
  • PHP
SQL 
阅读更多

关于yii的relations

.

太郁闷了,yii的relations里self::BELONGS_TO默认是用当前指定的键跟关联表的主键进行join,例如:

return array(
'reply' => array(self::BELONGS_TO, 'BookPostReply', 'postid'),
);

默认生成的sql是 on id = postid,id是BookPostReply的主键。
但今天我遇到的需求却是需要生成 on BookPostReply.postid = t.postid,不去关联主键,而且关联其中一个字段的值,怎么搞都搞不定,论坛也翻了个遍,不得不说,yii的论坛搜索功能真的很烂,每次用都要从一 堆的内容里过滤信息,还不见的能找到自己想要的,而且手册也比较简单,对这些东西没有做比较深入的解答。

后来无意中看到有个on的属性,刚好跟sql里的on一样,于是抱着试试的想法,在配置里加了上去

return array(
'reply' => array(self::BELONGS_TO, 'BookPostReply', 'postid', 'on' => 't.postid=reply.postid'),
);

看调试信息里的SQL语句,发现yii生成了一条 on id = postid and t.postid=reply.postid 这样的语句,看到这就已经明白这个东西的作用了,于是将postid清空,改成如下:

return array(
'reply' => array(self::BELONGS_TO, 'BookPostReply', '', 'on' => 't.postid=reply.postid'),
);

终于将默认的on重置掉了^_^,yii确实很灵活,可惜一直没有一份详细的开发手册,导致很多时候要走不少弯路,希望以后手册能够更加完善起来吧!

分享到:
评论

相关推荐

    Yii中的relations数据关联查询及统计功能用法详解

    Yii 框架中的数据关联查询和统计功能是其Active Record模式的重要组成部分,极大地提高了开发者在处理复杂数据库交互时的效率。在Yii中,数据关联查询允许开发者方便地获取关联模型的数据,而统计功能则可以获取关联...

    yii-1.1.0.r1700.zip_yii_yii1.0 model结构

    - **关系(Relations)**:通过`relations()`方法定义与其他模型之间的关系,如一对一、一对多、多对多等。 - **行为(Behaviors)**:可以添加自定义行为以扩展模型功能,如软删除、时间戳自动更新等。 - **事件...

    yii快速入门教程--一个非常好的php框架

    - **如何声明关联**: 使用`relations()`方法定义关联关系。 - **关联查询**: 查询与主表关联的记录。 - **关联查询选项**: 设置关联查询的具体选项。 - **为字段名消除歧义**: 在多表查询时为字段命名。 - **...

    yii2-save-relations-behavior, 验证并保存相关的Active Record 模型.zip

    yii2-save-relations-behavior, 验证并保存相关的Active Record 模型 Yii2 Active Record 保存关系行为自动验证和保存相关的Active Record 模型。 特性支持 hasMany() 和 hasOne() 关系现有的相关模型一起工作支持...

    详解YII关联查询

    在Yii框架中,关联查询(Association Queries)是Active Record(AR)模式的重要组成部分,它允许开发者轻松地处理数据库中的多表关系。AR是Yii提供的一个ORM(对象关系映射)工具,它允许开发者以面向对象的方式...

    Yii PHP 框架BLOG开发手册

    - **3.1.2 自定义 relations() 方法 (Customizing relations() Method)** - **关联关系:** 如何定义文章与其他实体之间的关联关系。 - **示例代码:** 提供具体的代码示例。 - **3.1.3 添加 url 属性 (Adding ...

    yii2-save-relations-behavior:验证并保存自动相关的Active Record模型

    无论运行php composer.phar require --prefer-dist la-haute-societe/yii2-save-relations-behavior "*"或添加"la-haute-societe/yii2-save-relations-behavior": "*"到composer.json文件的require部分。...

    Yii2实现让关联字段支持搜索功能的方法

    1. 模型关联(Model Relations):在Yii2中,关联模型关系通常通过定义模型类中的方法来实现,例如在Branches模型中,可能会有一个指向companies模型的关系方法。这可以通过在Branches模型中定义一个方法来实现,如`...

    Yii使用技巧大汇总

    当需要重写ActiveRecord的方法时,如`rules()`, `relations()`, 或其他验证规则,务必确保重写的方法具有适当的返回类型(如`boolean`),以保持框架的正常工作。 9. **发布资源文件**: 使用`getAssetManager()-...

    Yii多表联合查询操作详解

    public function relations() { return array( 'relationType' => array(self::BELONGS_TO, 'SocialRelationType', 'relation_type_id'), 'user' => array(self::BELONGS_TO, 'AccessUser', 'user_id'), '...

    Yii统计不同类型邮箱数量的方法

    在Yii框架的其他文章中,我们还可以看到类似的数据统计和分析方法,如结合ChartJS进行数据可视化,或者利用Yii的`relations`功能进行数据关联查询和统计。了解这些技术有助于提升Yii框架的应用开发能力。

Global site tag (gtag.js) - Google Analytics