zoukankan      html  css  js  c++  java
  • yii2常用查询

    yii curd操作

    查询

    复合查询

      $data = $query->orderBy('apply.created_at desc')
                ->leftJoin('party','party.id=apply.party_id')
                ->select('apply.*,party.site')
                ->offset($pagination->offset)
                ->limit($pagination->limit)
                ->where(['apply.user_id' => $user_id])
                ->asArray()
                ->all();
    
    
    $user_info = MzCaseGroup::find()->alias('g')
    ->select(['i.*','g.create_time as times'])
    ->leftJoin('mz_insurance_user i','`g`.`user_id` = `i`.`user_id`')
    ->where(['group_id'=>$id])
    ->asArray()
    ->one();
    View Code

    插入

    批量插入

     $res = Yii::$app->db->createCommand()->batchInsert('exam_paper_answer', ['subject_id', 'answers', 'score', 'paper_id'], $answer_arr)->execute();
                   
    View Code

    更新

    User::updateAllCounters(['point' => 8],'id=1');
    User::updateAllCounters(['point' =>-8],'id=1');
    View Code

    事务

    案例1

            $transaction = Yii::$app->db->beginTransaction();
            try {
                //存入数据
                $exam_paper = new ExamPaper();
                $exam_paper->exam_id = +$answer['exam_id'];
                $exam_paper->partner_id = $user->id;
                $exam_paper->start_time = $answer['start_time'];
                $exam_paper->end_time = date("Y-m-d H:i:s");
                $exam_paper->score = $total_score;
                $exam_paper->status = $status;
                if (!$exam_paper->save()) {
                    throw new yiidbException(current($exam_paper->getFirstErrors()));
                }
                $paper_id = $exam_paper->id;
                foreach ($answer_arr as $k => $v) {
                    array_push($answer_arr[$k] ,$paper_id);
                }
                if($answer_arr){
                    //批量存入题目
                    $res = Yii::$app->db->createCommand()->batchInsert('exam_paper_answer', ['subject_id', 'answers', 'score', 'paper_id'], $answer_arr)->execute();
                    if (!$res) {
                        throw new yiidbException('请重新提交');
                    }
                }else{
                    throw new yiidbException('尚未做题');
                }
                $transaction->commit();
            } catch (yiidbException $e) {
                $transaction->rollBack();
                return ['code' => 2204, 'msg' => $e->getMessage()];
            }
    View Code

    两表连查  

    $model = Article::find()->joinWith(['type'])->select('new,t_name,article.t_id')->asArray()->all(); print_r($model);
    use yiidbQuery;
    $top10 = (new Query())
    ->from('article')
    ->select(['created_at','title'])
    ->groupBy(['created_at'])
    ->orderBy('id DESC')
    ->limit(10)
    ->all();

    //参数绑定,查询操作
    $sql='SELECT c.id,c.name,c.phone,c.age,c.sex,c.birthday,a.parent_id,a.camp_id,a.is_uppic,a.is_comment FROM `'.ChildrenApply::getTableSchema()->name.'` AS a left  JOIN `'.Children::getTableSchema()->name.'` AS c ON c.`id`=a.`children_id` WHERE a.`parent_id`=:parent_id AND a.`camp_id`=:camp_id  and a.status=1';
    $res=Yii::$app->db->createCommand($sql)->bindValues([':parent_id' => $parent_id,':camp_id' => $camp_id])->queryAll();
    插入操作
    $res= Yii::$app->db->createCommand()->batchInsert(Children::tableName(), $dbKey, $dbValue)->execute();
    //自增和自减
     

     //关联分页查询

     

     打印sql

    echo $query->createCommand()->getRawSql();die;

    参考https://www.yiichina.com/tutorial/95

  • 相关阅读:
    all the tops
    es6 and typescript
    [leetcode]question5: Longest Palindromic Substring
    webpack and publish lib
    HTTPClient to use http/https protocol to send request
    《算法导论》-分治法-笔记
    《Linux C编程一站式学习》-笔记
    WIN7中同时打开多个独立Excel窗口
    RAD Studio XE6之Tpanel
    vb中StatusBar1.Panels(3).Text = Format(Date, "yyyy年mm月dd日")是什么意思
  • 原文地址:https://www.cnblogs.com/huay/p/10642374.html
Copyright © 2011-2022 走看看