laravel

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中加入 idinfo( 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"

]

返回下表后,构成关联数组,带上了id

array: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(34);      //返回为删除的行数

$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('别名')
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值