laravel5.6操作数据curd写法(查询构建器)
laravel5.6 数据库操作-查询构建器
1 <?php 2 //laravel5.6 语法 demo示例 3 4 namespace App\Http\Controllers;//命名该控制App空间下名称 5 6 use Illuminate\Support\Facades\DB;//使用DB操作数据库 7 use App\Http\Controllers\Controller;//继承基础控制器 8 9 class UserController extends Controller 10 { 11 /** 12 * 展示应用的用户列表. 13 * 14 * @retu Response 15 */ 16 public function index() 17 { 18 //DB使用为每种操作提供了相应方法:select(查),update(修改),insert(插入),delete(删除),statement(声明) 19 //建议占位符,其他框架通用性强 20 //原生sql写法 21 $data = DB::select('select * from users where id = :id and name = :name ',[':id' => 1,':name' =>'测试']); 22 23 //查方法 24 //get() 方法获取表中所有记录(获取多行多列) 25 $data = DB::table('users')->get(); 26 27 //first() 方法将会返回单个对象(获取一行一列) 28 //where() 方法查询指定条件对象 29 $data = DB::table('users')->where('id','name','3','测试')->first(); 30 31 //select() 方法可以查询指定自定义字段 32 $data = DB::table('users')->select('id','name', 'email')->get(); 33 34 //value() 方法从结果中获取单个值,该方法会直接返回指定列的值: 35 $data = DB::table('users')->where('name','测试')->value('email'); 36 37 //pluck() 方法获取单个列值的数组 38 $data = DB::table('users')->pluck('name'); 39 40 //count() 统计数量 41 $data = DB::table('users')->count(); 42 43 //exists() 方法来判断匹配查询条件的结果是否存在 44 $data=DB::table('users')->where('id', 1)->exists(); 45 46 //join() 方法连表查询 47 $data = DB::table('users') 48 ->join('ceshi', 'users.id', '=', 'ceshi.id') 49 ->select('users.*', 'ceshi.name') 50 ->get(); 51 52 //leftJoin() 方法左连表查询 53 $data = DB::table('users') 54 ->leftJoin('ceshi', 'users.id', '=', 'ceshi.id') 55 ->select('users.*', 'ceshi.name') 56 ->get(); 57 58 //where() 参数说明:(一)参数是列名,(二)参数是操作符,(三)参数是该列要比较的值 59 $data = DB::table('users') 60 ->where('id', '>=', 1) 61 ->where('name', 'like', '测试%') 62 ->get(); 63 64 //传递条件数组到where中写法,建议多where查询使用这个方法 65 $data = DB::table('users') 66 ->where([ 67 ['id', '>=', 1], 68 ['name', 'like', '测试%'] 69 ]) 70 ->get(); 71 72 //whereBetween() 方法验证列值是否在给定值之间 73 $data = DB::table('users') 74 ->whereBetween('id', [1, 3])->get(); 75 76 //whereIn 方法验证给定列的值是否在给定数组中: 77 $data = DB::table('users') 78 ->whereIn('id', [1, 2, 3]) 79 ->get(); 80 81 //orderBy() 方法排序 82 $data = DB::table('users') 83 ->orderBy('id', 'desc') 84 ->get(); 85 86 //insert() 方法插入记录到数据表 87 //insertGetId() 方法插入记录并返回自增ID值 88 $data=DB::table('users')->insert( 89 [ 90 'name'=>'测试', 91 'email' => 'ceshi.com', 92 'password' => 'ceshi' 93 ] 94 ); 95 96 //update() 方法修改记录 97 $data =DB::table('users') 98 ->where('id', 1) 99 ->update(['name' => '测试']);100 101 //delete() 方法删除记录102 $data=DB::table('users')->where('id', '>', 10)->delete();103 104 105 //paginate() 方法分页 每页显示数量106 //注意:目前使用 groupBy 的分页操作不能被Laravel有效执行107 $data = DB::table('users')->paginate(2);108 109 110 //前台分页中链接附加参数实现分页111 $getName = $GET['name']?:'';112 $data = DB::table('users')113 ->select('id','name','age')114 ->where('name', 'like', $getName.'%')115 ->paginate(2);116 117 //返回给前端视图数据118 retu $this->view('index',['data'=>$data,'namePage'=>$getName]);119 120 //前端引用代码 121 //appends 方法添加查询参数到分页链接查询字符串; 添加 &name=$namePage到每个分页链接中.122 {{ $data->appends(['name' => $namePage])->links() }}123 124 125 //simplePaginate() 方法分页视图中简单的显示“下一页”和“上一页”链接126 $data = DB::table('users')->simplePaginate(2);127 //返回给前端视图数据128 retu $this->view('index',['data'=>$data]);129 //前端简单引用代码 130 <div class="container">131 @foreach ($users as $user)132 {{ $user->name }}133 @endforeach134 </div>135 {{ $data->links() }}136 137 138 //原生分页写法139 $page = 2;140 $pageSize = 1;141 $offset = ($page - 1) * $pageSize;142 $result = DB::table('picasa')143 ->where('title', 'like', '%'.$title.'%')144 ->offset($offset)145 ->limit($pageSize)146 ->get();147 148 //返回数据视图文件149 retu $this->view('index', ['result' => $result]);150 151 }152 }
groupBy 对查询结果进行分组出现问题
1 当select和groupBy中列表不一致时候会报错。mysql从5.7以后,默认开启group by的严格模式。2 3 解决方法:找到config/database.php 在mysql下面把'strict' => true,改为false。[建议不要修改。写对正确操作语法。]4 5 例如:6 $booked = DB::table('booked_user')7 ->select('game_id', DB::raw('count(*) as total'))8 ->groupBy('game_id')9 ->get();
开启sql查询日志
1 DB::connection()->enableQueryLog();//开启QueryLog2 $data = DB::table('users')->select('id','name', 'email')->get();//执行sql3 dump(DB::getQueryLog());//sql语句和查询时间
写入日志信息
八种日志级别:emergency、alert、critical、error、waing、 notice、info 和 debug
默认日志存放位置: /storage/logs/laravel.log
引用: use Illuminate\Support\Facades\Log;
1 Log::emergency(string $message, array $context = []);2 Log::alert(string $message, array $context = []);3 Log::critical(string $message, array $context = []);4 Log::error(string $message, array $context = []);5 Log::waing(string $message, array $context = []);6 Log::notice(string $message, array $context = []);7 Log::info(string $message, array $context = []);8 Log::debug(string $message, array $context = []);
laravel5.6 操作数据ORM链接: 请点击跳转
作者:echo曦
来源链接:https://www.cnblogs.com/cxx8181602/p/9305830.html
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。