为什么要使用
为什么要问那么多为什么
安装
对于我这种初学者,这里直接使用了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/…