legend3---lavarel经常使用操做代码2

legend3---lavarel经常使用操做代码2

1、总结

一句话总结:

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

 

一、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()); //二、插入标签课程数据--关系表 $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'], // ]);  } });

 

 

二、使用Seeder建立数据库数据?

· 生成seeder文件:php artisan make:seeder UsersTableSeeder
· 运行seeder文件:php artisan db:seed --class=UsersTableSeeder
· faker本地化:$faker=\Faker\Factory::create('zh_CN');
<?php

use Illuminate\Database\Seeder;

class UsersTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //产生faker实例
        $faker=\Faker\Factory::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);
    }
}

 

 

三、lavarel变量输出报错状况?

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

 

四、ajax?

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

视图端php

//课程的点赞收藏操做
        $('.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);
                }
            });
        });

 

控制器端html

    //点赞课程
    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;
    }

 

 

五、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>

 

 

六、转码和解码?

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

 

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

usort($question_list, array('App\Model\Admin\ChooseQuestion\Timeline\GroupByTimeline',"cmp_question_collected"));
//一、能够先对数组按照时间戳来由大到小排序(由于优先显示近期的,)
usort($question_list, array('App\Model\Admin\ChooseQuestion\Timeline\GroupByTimeline',"cmp_question_collected"));



//一、按照题目的收藏时间由大到小排序
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;
}

 

 

八、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>

 

 

九、检测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>

 

 

 

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

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

视图端vue

{{--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>

控制器端ajax

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);
}

 

 

 

 

 

2、内容在总结中

相关文章
相关标签/搜索