关于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 框架中的数据关联查询和统计功能是其Active Record模式的重要组成部分,极大地提高了开发者在处理复杂数据库交互时的效率。在Yii中,数据关联查询允许开发者方便地获取关联模型的数据,而统计功能则可以获取关联...
- **关系(Relations)**:通过`relations()`方法定义与其他模型之间的关系,如一对一、一对多、多对多等。 - **行为(Behaviors)**:可以添加自定义行为以扩展模型功能,如软删除、时间戳自动更新等。 - **事件...
- **如何声明关联**: 使用`relations()`方法定义关联关系。 - **关联查询**: 查询与主表关联的记录。 - **关联查询选项**: 设置关联查询的具体选项。 - **为字段名消除歧义**: 在多表查询时为字段命名。 - **...
yii2-save-relations-behavior, 验证并保存相关的Active Record 模型 Yii2 Active Record 保存关系行为自动验证和保存相关的Active Record 模型。 特性支持 hasMany() 和 hasOne() 关系现有的相关模型一起工作支持...
在Yii框架中,关联查询(Association Queries)是Active Record(AR)模式的重要组成部分,它允许开发者轻松地处理数据库中的多表关系。AR是Yii提供的一个ORM(对象关系映射)工具,它允许开发者以面向对象的方式...
- **3.1.2 自定义 relations() 方法 (Customizing relations() Method)** - **关联关系:** 如何定义文章与其他实体之间的关联关系。 - **示例代码:** 提供具体的代码示例。 - **3.1.3 添加 url 属性 (Adding ...
无论运行php composer.phar require --prefer-dist la-haute-societe/yii2-save-relations-behavior "*"或添加"la-haute-societe/yii2-save-relations-behavior": "*"到composer.json文件的require部分。...
1. 模型关联(Model Relations):在Yii2中,关联模型关系通常通过定义模型类中的方法来实现,例如在Branches模型中,可能会有一个指向companies模型的关系方法。这可以通过在Branches模型中定义一个方法来实现,如`...
当需要重写ActiveRecord的方法时,如`rules()`, `relations()`, 或其他验证规则,务必确保重写的方法具有适当的返回类型(如`boolean`),以保持框架的正常工作。 9. **发布资源文件**: 使用`getAssetManager()-...
public function relations() { return array( 'relationType' => array(self::BELONGS_TO, 'SocialRelationType', 'relation_type_id'), 'user' => array(self::BELONGS_TO, 'AccessUser', 'user_id'), '...
在Yii框架的其他文章中,我们还可以看到类似的数据统计和分析方法,如结合ChartJS进行数据可视化,或者利用Yii的`relations`功能进行数据关联查询和统计。了解这些技术有助于提升Yii框架的应用开发能力。