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、內容在總結中

相關文章
相關標籤/搜索