laravel
来源:互联网 发布:看板设计软件 编辑:程序博客网 时间:2024/05/16 06:05
Laravel学习笔记
路由:
单一路由请求
Route::get('路由名称',function (){ //单一路由请求 return 'hello,World';});
多请求路由
Route::match(['get','post'], '路由名称',function(){ //多请求路由,可接受get和post两个请求 return 'hello,world';});
Route::any('路由名称',function(){ //可以相应任何请求 renturn 'xxx'});
路由参数
Route::get('test/{id}',function($id){ //在浏览器中输入 test/2 浏览器会显示 test-2 return 'test-'.$id;});
Route::get('test/{name?}',function($name = 'tao'){ //当在浏览器输入 test/时,浏览器显示默认值 test-name-tao return 'test-name-'.$name; //当输入 test/tao1 则会显示 test-name-tao1});
Route::get('test/{name?}',function ($name = 'tao'){ //如果输入 test/1 会报错,因为不符合输入规范 应该输入A-Z和a-z的 return 'test-name-'.$name;})->where('name','[A-Za-z]+');
Route::get('test/{id?}/{name}',function (id,name){ //只有输入 test/1/tao 会成功,满足正则表达式的定义 return 'test-id-'.$id.'-name-'.$name;})->where(['id'=>'[0-9]+','name'=>'[A-Za-z]+']);
Route::get('test/member-center',['as'=>'center',function(){ //路由别名 可以通过route(‘别名’)来返回当前URL的地址,比如此函数返回http://localhost/laravel/public/test/member-center return route('center');}]);
路由群组
Route::group(['prefix'=>'member'],function (){ //prefix=前缀 在路由群组中的路由,如果访问 test1 是无法访问的 如果为member/test1即可访问 Route::get('test1',function (){ return 'hello ,test1'; }); Route::get('test2',function (){ return 'hello test2'; });});
在模板中输出视图
Route::get('view', function () { // 创建路由后 直接 return view('文件名(XX.blade.php)'); return view('welcome');});
创建控制器
1.控制器的创建需要在Http下面的Controller里创建
2.命名规则需要驼峰命名法
3.需要填写命名空间一般为namespace App\Http\Controllers;
4.最简单控制器代码
class MemberController extends Controller{ public function info(){ return 'member-info'; }
在路由中输入
Route::get('test','MemberController@info') //即可在浏览器中输入 test访问, MemberController为控制器的名称,info为方法,中间由@连接;
//另一种表示方式Route::get('test',['uses' => 'MemberController@info']); //any ,post 等等都可用 //uses是固定的不可修改
给关联控制器的路由起别名
Route::get('test',['uses' =>'MemberController@info','as' => 'member' //别名为member 可用route输出地址]);
传入值,而且验证值 只需要在方法info中加入id即可info( id)
Route::get('test/{id}',[ 'uses'=>'MemberController@info', 'as' => 'member'])->where(['id'=>'[0-9]+']);
View的输出
一般的我们把一个控制器的视图都放在一个文件夹里
比如饮用member下的info.blade.php视图,则应该在控制器里return view(‘member/info’);
我们也可以在视图里输出变量,只需要在控制器中定义变量即可在控制器中
return view('member/info',[ 'name'=>'tao', 'age'=>18 ]);//在模板中{{$name}}{{age}}即可输出变量
模型的建造
模型之家在app下创建 ,namespace App;
内容大致与控制器相同
但是在使用模型时要在控制器中
例:Member模型的getMember方法
只需要在控制器中 Member::getMember();即可
连接数据库
laravel已经帮我们封装过数据库了
只需要在env中修改即可
使用数据库的功能可使用DB模型
DB::select(‘select * from xxx’); //查询 返回数组
insert
DB::insert('insert into student(name,age) values(?,?)',['tao','18']); //向数据库添加数据,不过这这种更安全 //如果成功返回BOOL值
update
$num = Db::update('update student set age = ? where name = ?',[20,'tao']); //向数据库中更新数据,返回结果为影响的行数
select
DB::select('select * from xxx'); $arr = DB::select('select * from student where age > ?', [19]);// 查询where 年龄大于19 返回结果为数组
delete
$num = DB::delete('delete from student where id = ?', [2001]);//删除数据库中数据,返回结果为删除的行数
查询构造器
$bool = DB::table('student')->insert( //查询构造器和上述方法一样 ['name' => 'tao2','age' => '15'] );
使用查询构造器获得自增id
$num = DB::table('student')->insertgetid( //既返回id 返回的为id值 ['name' => 'tao3','age' => '15'] );
使用查询构造器 一次插入多条数组
$bool = DB::table('student')->insert([ //既使用二维数组,返回值为Bool ['name' => 'name1','age' => 18], ['name' => 'name2','age' => 20] ]);
使用查询构造器更新数据
$num = DB::table('student') ->where('id',2003) //返回值为更新的行数 ->update( ['name'=>'tao9'] );
使用查询构造器自增自减
$num = DB::table('student')->increment('age'); // 默认全部数据自增年龄字段加1 返回为影响的行数$num = DB::table('student')->increment('age',3);//默认全部数据自增年龄字段加3 返回为影响的行数$num = DB::table('student')->decrement('age'); // 默认全部数据自减年龄字段加1 返回为影响的行数$num = DB::table('student')->increment('age',3);//默认全部数据自减年龄字段3 返回为影响的行数$num = DB::table('student') //增加id为2003的数据年龄加100,返回影响的行数 ->where('id',2003) ->increment('age',100);$num = DB::table('student') //在自增年龄的同时,更改那么字段,返回仍为影响的行 ->where('id',2003) ->increment('age',100,['name'=>'imooc']);
使用查询构造器删除数据
$num = DB::table('student') //删除id为2003的,如果不带where条件全表删除 返回为受影响行数 ->where('id',2003) ->delete();$num = DB::table('student') ->where('id','<=',2003) //增加删除条件,删除<=2003的 返回影响的行数 ->delete();DB::table('student')->truncate(); //全表删除,不返回任何数据 很危险不建议使用
使用查询构造器查询数据
students = DB::table('student')->get(); //获取数据表中全部数据,返回全部数组,建议用dd()方法打印数组$students = DB::table('student')->first(); //获取表中第一条数据,返回第一条数据的数组$students = DB::table('student') ->orderBy('id','desc') ->first(); //获取第一条数据,数据以倒叙排列,既获取最新数据 返回第一条数据数组$students = DB::table('student') ->where('id','>=',6) ->get(); //使用where条件 查询所有id>6的数组 $students = DB::table('student') ->whereRaw('id >= ? and age > ?',[5,10]) ->get(); //添加多个条件 把where改为 whereRaw $name = DB::table('student')->pluck('name'); //返回指定字段,返回数据库中全部的name字段 $name = DB::table('student')->lists('name'); //效果和pluck一样 $name = DB::table('student')->lists('name','id'); //此处可返回表
原来数据情况:
array:9 [▼ 0 => "tao1" 1 => "tao2" 2 => "tao3" 3 => "tao4" 4 => "tao5" 5 => "tao6" 6 => "tao7" 7 => "tao8" 8 => "tao9"]返回下表后,构成关联数组,带上了idarray:9 [▼ 1 => "tao1" 2 => "tao2" 3 => "tao3" 4 => "tao4" 5 => "tao5" 6 => "tao6" 7 => "tao7" 8 => "tao8" 9 => "tao9"]
查询指定字段
$student = DB::table('student') //查询数据库中指定字段 id,name,age的值,用get()返回全部数据 ->select('id','name','age') ->get();
每次查询2条数据
DB::table('student')->chunk(2,function ($student){ //每次查询2条数据 var_dump($student); });DB::table('student')->chunk(2,function ($student){ //查询两条后自动退出 var_dump($student); return false; });
聚合函数
$num = Db::table('student')->count(); //统计有多少条数据 返回的值是数据的条数$max = Db::table('student')->max('age');//年龄的最大值 ,ave()求平均,min()求最小
ORM
在app下面创建模型namespace App;use Illuminate\Database\Eloquent\Model; //一般直接表的名称是模型的复数class Student extends Model{ protected $table = 'student'; //指定表名 protected $primaryKey = 'id'; //指定主键}
ORM查询
$students = Student::all(); //返回全部的数据$student = Student::find(5); //根据主键查找 查找主键为5的数据,返回的是一条数据$student = Student::findOrfail(55); //根据主键查找,如果所查数据不存在即会报错$student = Student::where('age','>','5')->first(); //加条件的查找查询构造器的函数这都能用Student::count(); // 以下同理,上面提到的函数都能用
使用模型增加数据,在控制器中
$student = new Student(); $student->name = 'tao11';//使用save方法时,会新增时间,如果不想可以在模型中输入 public $timestamps = false; $student->age = 19; $bool = $student->save();在模型中添加protected function getDateFormat(){ //时间会自动变成时间戳 return time(); }想输出时间直接 $time = Student::find(12); //即可输出时间 echo $time->created_at;在使用create方法前要先在模型中加入允许批量赋值的语句protected $fillable = ['name','age']; 后面为允许批量赋值的字段 $student = Student::create( ['name' => 'tao15','age'=>'18'] //使用create方法赋值 );
指定不能批量赋值的字段
protected $guarded = [] //即可指定不能在create赋值
firstOrCreate
$student = Student::firstOrCreate( ['name' => 'tao16','age'=>'18'] //查找数据,如果查不到就新增一条
firstOrNew
$student = Student::firstOrNew( ['name' => 'tao17','age'=>'18'] //查找数据,如果找不到就新增一个实例,如果需要保存自行调用save函数 ); );
ORM更新数据
$student = Student::find(5); $student->name = 'tao55'; $student->save();$num = Student::where('id','>',13)->update( //使用查询构造器批量更新 返回的是更新的行数 ['age'=>41] );
使用orm删除数据
$student = Student::find(2); $student->delete(); //返回值为bool值$num = Student::destroy(3,4); //返回为删除的行数$num = Student::where('id','>',13)->delete(); //删除指定条件的数据
模板继承
larevel 中的模板继承可见 laravel基础篇的7-1
在模板中输出php
现在控制器中定义一个变量$name = tao;只需在 return view('模板名称', //即可[ 'name'=>$name])在模板中<p>{{$name}}</p>模板中的原样输出只需要<p>{{@$name}}</p>模板中的注释{{-- --}}include引入子视图@include('路径')
URL
模板中的URL
url() url('路由名称‘)action(’控制器和方法名')route('别名')
阅读全文
0 0
- Laravel
- laravel
- Laravel
- laravel
- Laravel
- Laravel
- Laravel
- Laravel
- laravel
- Laravel
- laravel
- Laravel
- Laravel
- Laravel
- laravel
- laravel
- laravel
- 【Laravel】laravel环境搭建
- usaco(集合,水题但比较新颖)
- 字符串大小写逆置(神奇的ascll码)
- Unity试题整理(1)
- LINUX 下监听文件过多出现报错Error:watch ENOSPC
- 1003. 我要通过!(20)
- laravel
- 三段式状态机的写法总结
- java练习题4
- 分割符和定长解码
- SPOJ10606 BALNUM
- Android7.0的systemUI的一些文章链接
- Android移动开发-Android数据加密与解密的实现
- 进程间通讯-无名管道
- NGUI与UGUI的区别及其优缺点