数据操作相关问题 [ 2.0 版本 ]
1.经常会业务表连接字典表的操作,AR的操作是例如:
Table1::find($id)->joinWith('Table2')->one();
//Models里还需要建立关系
public function getTable2()
{
return $this->hasOne(\frontend\models\Table2::className(), ['t1id' => 't2id']);
}
//这样得到的SQL语句是 select table1. form table1 left jion table2 on table1.t1id=table2.t2id
//但是想要的结果是select table1.,table2.name form table1 left jion table2 on table1.t1id=table2.t2id
//这个怎么弄弄?有没有完整的MVC实例?
2.安全最佳体验的中文版手册,大神们抓紧翻译啊
!!!!!!!!!!
“直接使用$data->table2来获取关联表的值”这个很需要,谢谢您的答复
共 1 个回答
-
可以这样实现你要的sql (注意:find方法是没有参数的,如果需要跟参数,采用where方法)
$data = Table1::find()->joinWith('Table2')->select(['table1.*', 'table2.name'])->one();
经过测试是不能通过
$data->table2.name
来获取table2.name的值,不过你可以通过把结果转换成数组的方式获取$data = Table1::find()->joinWith('Table2')->select(['table1.*', 'table2.name'])->asArray()->one();
(注意asArray()一定要写在one之前)
最后:其实可以不用采用joinWith(),直接使用
$data->table2
来获取关联表的值----说的不对的地方,还望大家指正----
搞搞的传奇
最后登录:2020-06-04
在线时长:24小时46分
- 粉丝8
- 金钱5
- 威望10
- 积分345