zoukankan      html  css  js  c++  java
  • legend3---lavarel常用操作代码2

    legend3---lavarel常用操作代码2

    一、总结

    一句话总结:

    对于王思cong被执法人的感悟:失意时 莫心伤,得意时 莫膨胀

    1、lavarel自动事务?

    DB::transaction方法里面是闭包,参数用use传进去
    DB::transaction(function () use ($request,$lesson) {
          //dd($request->toArray());
          $lesson['l_title']=$request['l_title'];
          $lesson['l_introduce']=$request['l_introduce'];
          $lesson['l_preview']=$request['l_preview'];
          $lesson['l_is_commend']=$request['l_is_commend'];
          $lesson['l_is_hot']=$request['l_is_hot'];
          $lesson['l_click']=$request['l_click'];
          $lesson->save();
          //dd($lesson['l_id']);
          //dd($lesson->toArray());
    
          //2、插入标签课程数据--关系表
          $tags=$request['tags'];
          foreach ($tags as $tag){
              $tag_lesson=[];
              $tag_lesson['tl_t_id']=$tag;
              //$tag_lesson['tl_l_id']=$lesson['l_id'];
              //TagAndLesson::create($tag_lesson);
              //dd($tag_lesson);
              $lesson->hasManyLessonTags()->create($tag_lesson);
    
          }
    
    
          //videos数据过来的时候是json数据,true表示转成数组而非对象
          $videos=json_decode($request['videos'],true);
          //dd($videos);
          foreach ($videos as $video){
              unset($video['v_id']);
              $lesson->videos()->create($video);
    //            $lesson->videos()->create([
    //                'title'=>$video['title'],
    //                'path'=>$video['path'],
    //            ]);
          }
      });

     

    2、使用Seeder创建数据库数据?

    · 生成seeder文件:php artisan make:seeder UsersTableSeeder
    · 运行seeder文件:php artisan db:seed --class=UsersTableSeeder
    · faker本地化:$faker=FakerFactory::create('zh_CN');
    <?php
    
    use IlluminateDatabaseSeeder;
    
    class UsersTableSeeder extends Seeder
    {
        /**
         * Run the database seeds.
         *
         * @return void
         */
        public function run()
        {
            //产生faker实例
            $faker=FakerFactory::create('zh_CN');
            //循环生成数据
            static $password;
            $data=[];
            for ($i=0;$i<10;$i++){
                $data[]=[
                    'phone' => $faker->phoneNumber,
                    'password' => $password ?: $password=bcrypt('123456'), // secret
                    'email' => $faker->email,
                    'name' => $faker->name,
                    'created_at' => date('Y-m-d H:i:s',time()),
                    'updated_at' => date('Y-m-d H:i:s',time()),
                ];
            }
            DB::table('users')->insert($data);
        }
    }

    3、lavarel变量输出报错情况?

    @if(isset($d->blog->b_title)) {{$d->blog->b_title}} @endif

    4、ajax?

    主要传递回来valid和message两个变量,一个显示返回码,一个显示返回信息

    视图端

    //课程的点赞收藏操作
            $('.fa_like').click(function () {
                let l_id=$(this).attr('l_id');
                let _this=$(this);
                //console.log(l_id);
                $.post("/like_lesson", {'l_id':l_id,'_token':'{{csrf_token()}}'} ,function (data) {
                    console.log(data);
                    if(parseInt(data.valid)==1){
                        _this.hide();
                        _this.parent().find('.fa_like_no').show();
                        layer_alert_success(data.message);
                    }else{
                        layer_alert_fail(data.message);
                    }
                });
            });

    控制器端

        //点赞课程
        public function like_lesson(Request $request){
            $back_data=[];
            $back_data['valid']=0;//表示连接失败
            $back_data['message']='';
            //dd($request->all());
            $ll_l_id=$request->input('l_id');
            //获取登录的用户id
            $ll_u_id=Auth::guard('user')->user()->id;
            $data=[];
            $data['ll_l_id']=$ll_l_id;
            $data['ll_u_id']=$ll_u_id;
            $ans=LikeLesson::insert($data);
            if($ans){
                //验证码错误
                $back_data['valid']=1;//表示验证码错误
                $back_data['message']='点赞成功!';
                return $back_data;
            }else{
                $back_data['valid']=0;//表示手机验证码发送成功
                $back_data['message']='点赞失败!';
            }
            return $back_data;
        }

    5、vue将时间戳转成时间?

    methods里面加一个方法即可
    <script>
        let vue_{{$comment_list_id}}=new Vue({
            el: '#comment_list_{{$comment_list_id}}',
            data: {
                comment_list: window.{{$comment_list_id}},
            },
            methods:{
                ts_to_time:function(ts){
                    return timestampToTime(ts*1000);
                }
            }
        })
    </script>

    6、转码和解码?

    转码:$blog['b_summary']=addslashes(htmlspecialchars($blogSummary));
    解码:$summary=stripslashes(htmlspecialchars_decode($perBlogData['b_summary']));

    7、自定义排序规则 排序?

    usort($question_list, array('AppModelAdminChooseQuestionTimelineGroupByTimeline',"cmp_question_collected"));
    //1、可以先对数组按照时间戳来由大到小排序(因为优先显示近期的,)
    usort($question_list, array('AppModelAdminChooseQuestionTimelineGroupByTimeline',"cmp_question_collected"));
    
    
    
    //1、按照题目的收藏时间由大到小排序
    public static function cmp_question_collected($a, $b)
    {
      if ($a['uq_collected_time'] == $b['uq_collected_time']) {
          return ($a['uq_id'] > $b['uq_id']) ? -1 : 1;
      }
      return ($a['uq_collected_time'] > $b['uq_collected_time']) ? -1 : 1;
    }

    8、vue判断一个数是否在数组里面?

    ["a","b","c"].indexOf("a")
    <script>
        let vue_{{$comment_list_id}}=new Vue({
            el: '#comment_list_{{$comment_list_id}}',
            data: {
                comment_list: window.{{$comment_list_id}},
                lesson_comment_ids:window.lesson_comment_ids,
            },
            methods:{
                ts_to_time:function(ts){
                    return timestampToTime(ts*1000);
                },
                like_comment:function (cl_id) {
                    return 1+parseInt(this.lesson_comment_ids.indexOf(cl_id));
                }
            }
        })
        //console.log(vue_{{$comment_list_id}}.comment_list);
        console.log(vue_{{$comment_list_id}}.lesson_comment_ids);
    </script>

    9、检测windows宽度改变函数?

    $(window).on('resize', function() { 代码 }).resize();
      {{--小屏幕端的时候去除 内容中container 的左右缩进--}}
      <script>
          function remove_container() {
              if($(window).width()>720){
                  $('#content_container').addClass('container');
              }else{
                  $('#content_container').removeClass('container');
              }
              $('#content_wrapper').show();
          }
          remove_container();
    
    
    
          $(function () {
              $(window).on('resize', function() {
                  //console.log("宽度改变了!");
                  //console.log($(window).width());
                  remove_container();
              }).resize();
              // window.onresize=function(){
              //     //console.log("宽度改变了!");
              //     remove_container();
              // }
          });
      </script>

    10、post请求处理表单信息?

    获取form的数据:$('#do_update_info_form').serializeArray();

    视图端

    {{--post请求提交表单信息--}}
    <script>
      function submit_update_info(){
          var data = {};
          var t = $('#do_update_info_form').serializeArray();
          $.each(t, function() {
              data [this.name] = this.value;
          });
          //console.log(JSON.stringify(data ));
    
          $.post("/do_update_info", {'data':data,'_token':'{{csrf_token()}}'} ,function (data) {
              //console.log(data);
              if(parseInt(data.valid)==1){
                  layer_alert_success_mobile(data.message);
                  //操作成功,两秒后自动跳转到XX界面
            //layer_mobile_success_jump(data.message,3,'个人中心','{{url('/my')}}');
    }else{ layer_alert_fail_mobile(data.message); } }); } </script>

    控制器端

    public function do_update_info(Request $request){
      $back_data=[];
      $back_data['valid']=0;//表示连接失败
      $back_data['message']='';
    
      //dd($request->all());
      $data=$request->input('data');
      //dd($data);
      $name_length=mb_strlen(trim($data['u_name']),'utf8');
      if($name_length>10){
          $back_data['valid']=0;
          $back_data['message']='昵称的字符数不能超过10个';
          return $back_data;
      }
      $motto_length=mb_strlen(trim($data['u_motto']),'utf8');
      if($motto_length>100){
          $back_data['valid']=0;
          $back_data['message']='个性签名 的字符数不能超过100个';
          return $back_data;
      }
      if($name_length) $name=$data['u_name'];
      if($motto_length) $motto=$data['u_motto'];
      $picture=$data['u_picture'];
      $u_id=Auth::guard('user')->user()->id;
      $user=Auth::guard('user')->user();
    
      //修改用户信息
      if(isset($name))
      $user->name=$name;
      if(isset($motto))
      $user->motto=$motto;
      $user->picture=$picture;
      $ans=$user->save();
    
      if($ans){
          $back_data['valid']=1;
          $back_data['message']='操作成功!';
          return $back_data;
      }else{
          $back_data['valid']=0;
          $back_data['message']='操作失败!';
      }
      return $back_data;
    
      //dd($user);
    }

    二、内容在总结中

     
  • 相关阅读:
    Mybatis和Spring整合也是能用BatchExecutor的
    与Spring整合的Mybatis没法真正使用BatchExecutor
    Mybatis和Spring整合后sqlsession啥时候关闭的
    Mybatis和Spring的整合原理
    Mybatis是怎么执行一条语句的
    8.11查询结果排序
    8.10、11(select分组和过滤)()
    8.7、8、9(select语句基本用法)(select语句基本运算符)(select聚合查询)
    8.4SQL(DML数据操作语言)-(insert插入数据)(updata更新数据),(delete数据)
    8.2数据库DDL语言(即数据库定义语言)(命名规则以及数据类型)
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/11605489.html
Copyright © 2011-2022 走看看