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

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('App\Model\Admin\ChooseQuestion\Timeline\GroupByTimeline',"cmp_question_collected"));
//1、可以先对数组按照时间戳来由大到小排序(因为优先显示近期的,)
usort($question_list, array('App\Model\Admin\ChooseQuestion\Timeline\GroupByTimeline',"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);
}

二、内容在总结中

 

legend3---lavarel常用操作代码2的更多相关文章

  1. legend3---lavarel常用操作代码

    legend3---lavarel常用操作代码 一.总结 一句话总结: 要自己总结一下常用代码,这样才方便,也才有收获 1.路由示例:Route::get('/login','Home\Login\L ...

  2. legend3---Homestead常用操作代码

    legend3---Homestead常用操作代码 一.总结 一句话总结: 在虚拟机里面改变文件windows里面也会变,在windows里面改变虚拟机里面也会变,所以可以在windows里面编程或者 ...

  3. 二叉树的python可视化和常用操作代码

    二叉树是一个重要的数据结构, 本文基于"二叉查找树"的python可视化 pybst 包, 做了一些改造, 可以支持更一般的"二叉树"可视化. 关于二叉树和二叉 ...

  4. c++ MFC图像处理CImage类常用操作代码

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9598974.html MFC图像处理CImage类常用操作 CImage类头文件为#inclu ...

  5. js常用操作代码

    页面前进后退<input type=button value=刷新 onclick="window.location.reload()"><input type= ...

  6. (转载)StringGrid常用属性和常用操作

    Delphi StringGrid常用属性和常用操作 StringGrid组件用于建立显示字符串的网格,与电子表格相似.它可使表格中的字符串和相关对象操作简单化.StringGrid组件提供了许多可控 ...

  7. (转载)Delphi StringGrid常用属性和常用操作

    Delphi StringGrid常用属性和常用操作 StringGrid组件用于建立显示字符串的网格,与电子表格相似.它可使表格中的字符串和相关对象操作简单化.StringGrid组件提供了许多可控 ...

  8. Delphi StringGrid常用属性和常用操作

    StringGrid组件用于建立显示字符串的网格,与电子表格相似.它可使表格中的字符串和相关对象操作简单化.StringGrid组件提供了许多可控制网格外观念的属性,以及利用表格的结构响应用户操作的事 ...

  9. git常用操作 配置用户信息、拉取项目、提交代码、分支操作、版本回退...

    git常用操作 配置用户信息.拉取项目.提交代码.分支操作.版本回退... /********git 配置用户信息************/ git config --global user.name ...

随机推荐

  1. 对SPI进行参数化结构设计

    前言 为了避免每次SPI驱动重写,直接参数化,尽量一劳永逸. SPI master有啥用呢,你发现各种外围芯片的配置一般都是通过SPI配置的,只不过有3线和四线. SPI slave有啥用呢,当外部主 ...

  2. SpringBoot中使用POI,快速实现Excel导入导出

    导出Excel 整体来说,Excel有.xls和.xlsx,那么在POI中这两个也对应两个不同的类,但是类名不同,方法基本都是一致的,因此我这里将只介绍.xls一种. 整体来说,可以分为如下七个步骤: ...

  3. Image Processing and Analysis_8_Edge Detection:Learning to Detect Natural Image Boundaries Using Local Brightness, Color, and Texture Cues ——2004

    此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...

  4. python实践总结与反思

    2019.6.20 python近期实践总结与反思 记录一些这两天python犯的一些低级却易犯的错误.千万不要犯第二次啊!! 1. py文件名字问题 py文件命名不能和调用的模块名一样! 比如,我要 ...

  5. java_赋值与初始化

    一.赋值(是给变量指定一个值或者是改变 一个变量的值) 变量类型  变量名=表达式 int i=10; 二.初始化 生成一个变量以后,必须通过明确的赋值语句进行初始化,然后在使用这个变量. 局部变量: ...

  6. EF Migraiton错误解决

    System.Runtime.Serialization.SerializationException: Type is not resolved for member 'Oracle.Managed ...

  7. jade继承

    代码的复用是jade非常突出的一个设计目标,jade不仅仅通过mixin来复用代码,他在文件的组织能力上也非常突出,说白了,就是继承和包涵   block定义的方式和调用的方式 block desc ...

  8. watch 监控的新旧值一致问题处理

    watch 监控的新旧值一致问题处理 http://www.imooc.com/article/details/id/286654

  9. CSS实现宽度自适应100%,宽高16:9的比例的圖片或者矩形

    前言 图片的大小是多少,宽度一定,高度要始终自自适应为16:9. 解决 1通过js,程序算出绝对高度再进行设置.这是解决问题最容易想到的方法. 2.我们的原则是能用css实现的功能尽量用css,这有利 ...

  10. 洛谷P1197 星球大战【并查集】

    题目:https://www.luogu.org/problemnew/show/P1197 题意:有n个结点m条无向边,k次操作每次摧毁一个结点并询问此时有多少连通块. 思路:平时在线的搞多了都没想 ...