2017-05-14 23:27:54 4487次浏览 4条回答 0 悬赏 10 金钱

我是从别地框架转过来的,不是特别了解yii的机制
我现在想实现
update a left join b on b.id = a.id set b.name = 'test';这类似的功能
yii中该怎么写

补充于 2017-05-14 23:29

$command = (new \yii\db\Query())

        ->where(['username' => '2'])
        ->join('INNER JOIN','sms_user','sms_.id = 1')
        ->limit(10)
        ->createCommand()
        ->update('sms_user',['username'=>'333'],['id'=>2]);

这个语句为什么打印只有update('sms_user',['username'=>'333'],['id'=>2]);这个语句,上面的都没了

  • 回答于 2017-05-15 08:50 举报

    你说的那种不会!
    我是这样写的。查询出来俩个数组。
    然后
    foreach($a as $v1){
    foreach($b as $v2){

    if($v1->id==$v2->id){
       这里修改!
    }
    

    }
    }

    2 条回复
    回复于 2017-05-15 10:47 回复

    哥哥 你这样对数据库的io造成了很大的压力啊

    回复于 2017-05-15 11:19 回复

    循坏里面链接数据库做修改 沃德天

  • 回答于 2017-05-15 09:15 举报

    可以这样执行sql语句,可以直接写原生的。

    $connection  = Yii::$app->db;
    $sql = "你的sql语句";
    $command = $connection->createCommand($sql);
    $res = $command->queryAll();
    
    3 条回复
    回复于 2017-05-15 10:48 回复

    原生的肯定会。。。。就是不知道yii封装好的有没有

    回复于 2017-05-15 11:21 回复

    楼上的可以 update 执行exec 方法 复杂数据库操作 都是写原生的sql 去执行 ,框架提供的也只是让你拼凑sql条件字段

    回复于 2017-05-15 14:24 回复

    其实yii2自己拼凑的sql语句效率不一定会比原生的好,因为它要考虑很多的情况,所以会有很多附加条件什么的,自己写的效率更高。但是要做好内容过滤。不要让人家做sql注入啥的。

    觉得很赞
  • 回答于 2017-05-15 17:46 举报

    都到这个复杂程度了,为什么不直接 createCOmmand 写sql?

  • 回答于 2017-05-17 12:38 举报

    想一次修改多表,自己写原生吧。即使用AR实现,以后也不好维护

您需要登录后才可以回答。登录 | 立即注册
xiaohei
试用期

xiaohei

注册时间:2017-05-14
最后登录:2017-07-13
在线时长:2小时56分
  • 粉丝0
  • 金钱0
  • 威望0
  • 积分20

热门问题