2015-02-24 11:36:35 2413次浏览 1条回答 0 悬赏 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.安全最佳体验的中文版手册,大神们抓紧翻译啊

补充于 2015-02-25 18:57

!!!!!!!!!!

补充于 2015-02-26 20:14

“直接使用$data->table2来获取关联表的值”这个很需要,谢谢您的答复

  • 回答于 2015-02-26 10:56 举报

    可以这样实现你要的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来获取关联表的值

    ----说的不对的地方,还望大家指正----

您需要登录后才可以回答。登录 | 立即注册
搞搞的传奇
见习主管

搞搞的传奇

注册时间:2015-02-24
最后登录:2020-06-04
在线时长:24小时46分
  • 粉丝8
  • 金钱5
  • 威望10
  • 积分345

热门问题