如何使用AR来实现下面的sql [ 2.0 版本 ]
select u.userID from se_classMembers m
INNER JOIN se_class c on c.classID=m.classID
INNER JOIN se_userinfo u on u.UserID=m.userID
where (m.identity='20401' or m.identity='20402') and c.gradeID='1008'
and m.userID>0
and u.subjectID=10010
and u.textbookVersion=20601
共 1 个回答
-
Model
public function getSe_class() { return $this->hasOne(Se_class::classname(), ['classID' => 'classID']); } public function getSe_userinfo() { return $this->hasOne(Se_userinfo::classname(), ['UserID' => 'UserID']); }
Controller
use app\models\se_classMembers; $query = se_classMembers::find() ->select(['se_classMembers.userID']) ->joinWith('se_class',true,'INNER JOIN') ->joinWith('se_userinfo',true,'INNER JOIN') ->where(['or', ['se_classMembers.identity' => '20401'], ['se_classMembers.identity' => '20402']]) ->andwhere(['se_class.gradeID' => '1008']) ->andwhere(['>','se_classMembers.userID',0]) ->andwhere(['se_userinfo.subjectID' => 10010]) ->andwhere(['se_userinfo.textbookVersion' => 20601]) ->createCommand()->RawSql; var_dump($qurey);
共 3 条回复我先试一下,看看行不行。
我是用这种方式处理的
$usersInfo = SeUserinfo::findBySql(
"select u.userID from se_classMembers m INNER JOIN se_class c on c.classID=m.classID ".
"INNER JOIN se_userinfo u on u.UserID=m.userID ".
"where (m.identity='20401' or m.identity='20402') and c.gradeID=:gradeID ".
"and m.userID>0 and u.subjectID=:subjectID and u.textbookVersion=:version",[':gradeID'=>$gradeId,':subjectID'=>$subjectId,':version'=>$versionId])->all();
冰恋冬
注册时间:2015-07-30
最后登录:2020-09-01
在线时长:21小时14分
最后登录:2020-09-01
在线时长:21小时14分
- 粉丝3
- 金钱4385
- 威望10
- 积分4695