laravel 入门之小白笔记

407 阅读3分钟

为什么要使用

为什么要问那么多为什么

安装

对于我这种初学者,这里直接使用了composer傻瓜安装

composer create-project laravel/laravel blog --prefer-dist

安装完成后访问 xxx.com/blog/public…, 默认执行 blog/routes/web.php 的路由

Route::get('/', function () {
    return 456; //output : 456
    //return view('welcome');
});

路由篇

看完Route的使用方式,不得不说laravel在路由方面确实很强大,下面来看下简单的几种写法:

Route::get('/my/info',function(){
    return '小宇炸炸炸';
});

Route::post('/my/create',function(){
    return '创建一个新小宇';
});

//设置路由前缀 /user/my/info
Route::group(['prefix' => 'user'], function () {
    Route::get('/my/info', function () {
        return '小宇炸炸炸';
    });
});

// /user/2
Route::any('user/{id}', ['uses' => 'UserController@index']);


web控制器位置:

blog/app/Http/Controllers/StudentController.php

控制器request请求常见方法

  $name = $request->get('name','默认值');  //不推荐 json有问题
  $name = $request->input('name','默认值');
  $data = $request->all();  //获取所有值
  $result = $request->has('name'); //是否存在name值

  $result = $request->method(); //获取请求类型
  $result = $request->isMethod('POST'); //是否是post请求
  $result = $request->ajax(); //是否是ajax请求
  $result = $request->url(); //当期的URL

session用法

 $request->session()->put('ceshi123','name123');
 
 $result = $request->session()->get('ceshi123','默认值');

返回response

//响应json字符串
$data = [
    'name' => '123',
    'sex_a' => 'a'
];


return response()->json($data);

重定向

return redirect('name?name=1');

中间件(middleware)

Route::group(['middleware'=>['activity','test']],function(){
    Route::get('activity1','StudentController@activity1');
});

如果要使用activity、test中间件,在kernel.php定义:

    protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'can' => \Illuminate\Foundation\Http\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'activity' => Activity::class,
        'test' => Test::class,
    ];

activity.php代码:

namespace App\Http\Middleware;

class Activity
{
    public function handle($request,\Closure $next)
    {
        echo 123;
        return $next($request);
    }
}

异常

try{
    throw new \Exception('错误');
 }catch(\Exception $e){
    report($e);
    return 1;
}

日志记录位置: blog/storage/logs/laravel.log

sql

//获取第一条数据
 $data = DB::table('wx_article')->where('id',1)->where('is_deleted',0)->get(['title'])->first();
 
 //DB::insert  DB::update  DB::delete

查询构造器

//插入数据 返回true
$data = DB::table('wx_article')->insert(['title' => '我的测试', 'content' => '内容']);

//插入数据 返回ID
$data = DB::table('wx_article')->insertGetId(['title' => '我的测试', 'content' => '内容']);

//批量插入数据
$data = DB::table('wx_article')->insert([
            ['title' => '我的测试22', 'content' => '内容22'],
            ['title' => '我的测试11', 'content' => '内容11'],
        ]);

//更新数据 返回影响行数
$ret = DB::table('wx_article')->where('id',1)->update(['create_time' => time()]);

//增加2   decrement()减少
$ret = DB::table('wx_article')->where('id',1)->increment('create_time',2);

//删除  truncate()清空表
$ret = DB::table('wx_article')->where('id', '>=', 5)->delete();

查询

//获取所有数据
$ret = DB::table('wx_article')->get();
//获取第一条数据
$ret = DB::table('wx_article')->first();

//orderby排序
$ret = DB::table('wx_article')->orderBy('id','desc')->get();

DB::table('wx_article')->where('id', '>=', 3)->orderBy('id', 'desc')->get();

//原生sql查询
$ret = DB::table('wx_article')
            ->whereRaw('id BETWEEN ? AND ?', [2, 4])
            ->get(['id','title']);

//查询指定字段,也可以这样写            
$ret = DB::table('wx_article')->select(['id','title'])->get();            
            
//返回某字段一维数据
$ret = DB::table('wx_article')
            ->whereRaw('id BETWEEN ? AND ?', [2, 4])
            ->pluck('title');
            
            
//每次查询两条循环处理
$ret = DB::table('wx_article')->orderBy('id','desc')->chunk(2,function($result){
            var_dump($result);
        });
        

聚合类

$ret = DB::table('wx_article')->count();
$ret = DB::table('wx_article')->max('id');
$ret = DB::table('wx_article')->min('id');
$ret = DB::table('wx_article')->sum('id');
$ret = DB::table('wx_article')->avg('id');

Eloquent ORM

新建模型文件

namespace App;

use Illuminate\Database\Eloquent\Model;

class Article extends Model
{
    //table name
    protected $table = 'wx_article';
    
    protected $primaryKey = 'id';
    
    //不再自动维护时间戳-必须
    public $timestamps = false;
}

查询

//获取所有数据转成数组
$ret = Article::all()->toArray();
//所有数据
$ret = Article::get();

//获取主键id=1的数组 打印title
$ret = Article::find(1);
dd($ret->title);    

//查询一条
$ret = Article::where('id','>','2')
            ->orderBy('create_time','desc')
            ->first();

//chunk
 Article::chunk(2,function($result){
            var_dump($result);
        });
    
//聚合    
$ret = Article::count();
$ret = Article::max('id');
$ret = Article::min('id');
$ret = Article::sum('id');

使用模型新增数据
//save()
$model = new Article();
$model->title = '123';
$model->create_time = time();
$ret = $model->save(); //output true

//create()
$ret = Article::create(['title'=>'444','content'=>'ha']);
//使用create之前必须指定允许批量赋值
class Article extends Model
{
   。。。
    //允许批量赋值
    protected $fillable = ['title','content'];
    //不允许批量复制
    protected $guarded = [];
   。。。
}


//如果不存在创建 否则查找 后返回
$ret = Article::firstOrCreate(['title'=>'333']);

修改

$model        = Article::find(2);
$model->title = "333333";
$ret          = $model->save();  //true

//批量修改 返回影响行数
Article::where('id','<',2)->update(['title'=>44444]);

删除

$model=Article::find(2);
$model->delete()

视图简单应用

controller

return view('student.index',['name'=>'123']);

layout.blade.php

<header>header{{$name}}</header>

@yield( 'content')

<footer>footer</footer>

about.blade.php

<h3>about</h3>

student/index.blade.php

@extends('layout')

@section('content')
    <h1>123123123123</h1>
    @include("about")
@endsection

输出:

header123
123123123123
about
footer

还可以进行传值操作

@extends('layout',['msg'=>$name])
@include("about",['data'=>$data])

其他判断操作

{{  $name1 or 'defalut' }}  // 如果没有$name1 输出default

@if ($name == '123')
    iiii
@elseif (strtolower($name)=='j')
    jjj
@else
    xxx
@endif


@foreach($data as $item)
    //....
@endforeach

生成地址

{{ url('url') }}  //http://localhost/laravel/blog/public/url

{{ action('StudentController@getInfo') }}

//Route::get('name',['as'=>'name','uses'=>'StudentController@getInfo']);
{{ route('name')}}  //必须如上起别名才能用

更详细的视图文章请点击: blog.csdn.net/Ghost_hell/…