laravel笔记

1、安装方式(俩种)

a、通过 Laravel 安装器:composer global require laravel/installer--》laravel new blog

b、通过 Composer 创建:composer create-project --prefer-dist laravel/laravel blog "5.5.*"

测试运行,使用php内置服务器:php artisan serve

 

2、Laravel内置了一套完整的用户注册、登录、修改密码的身份验证系统,可以分别适用于web和api端,其中,web使用session,api端使用token,来存储和验证身份。
数据库表:使用命令 php artisan migrate,注册用户信息的表users,包含了name、password、email、remember_token(web用)、api_token(api用)等必要字段;

后台的代码文件位于:控制器:app\Http\Controllers\Auth\; 模型:App\User.php;配置:config/auth.php;
目录:app\Http\Controllers\Auth 下的控制器:
LoginController.php(登录)、RegisterController.php(注册)、ResetPasswordController.php(重置密码)、ForgotPasswordController.php(忘记密码)、ConfirmPasswordController.php(确认密码)

前台的登录页面流程:Laravel每个版本都带了一套简易登录流程,可使用命令自动生成,具体的,需要按照Laravel的版本号,到官方开发文档的"安全"->“身份认证”一章去查看;

参考(基于Laravel5.5):https://blog.csdn.net/hshshshshs1/article/details/121664650;https://blog.csdn.net/hshshshshs1/article/details/121670265;

 

2、常用命令:

复制代码
php artisan list    查看php artisan所有命令

生成控制器:
php artisan make:controller ArticleController
php artisan make:controller ArticleController --model=Photo//指定model
php artisan make:controller ArticleController --resource //生成(RESTFUL接口规范的)资源控制器(带有index、create、store、edit、update、destroy、show方法),然后再注册资源路由即可;
Route::resource('article', 'ArticleController'); //注册资源路由

php artisan make:controller ArticleController  --resource --api //生成api开发接口的资源控制器
Route::apiResource('article', 'ArticleController'); //注册api资源路由,即:排除了 create 和 edit 俩个方法


#创建模型
php artisan make:model User 
php artisan make:model Models/User //放到App/Models/目录
php artisan make:model User -m  //创建模型并创建新迁移
php artisan make:model User -m -c -r //同时生成迁移+控制器+路由

#清除缓存
php artisan cache:clear //清除应用缓存 php artisan view:clear //清除视图缓存 php artisan config:cache //清除配置缓存

php artisan route:cache //生成路由缓存
php artisan route:clear //清除路由缓存


#创建中间件
php artisan make:middleware CheckToken


复制代码

 

3、request方法:use Illuminate\Http\Request;

复制代码
$name = $request->input('name') ;
$name = $request->name ; //获取请求参数
$input = $request->all(); //获取所有输入数据

$bool = $request->has('name'); //判断是否有值,一个
$bool = $request->has( ['name', 'email'] ); //判断是否有值,多个

$bool = $request->hasFile('img'); //判断是否有上传文件
$file = $request->file('img'); //获取上传文件

$uri = $request->path(); //获取请求路径,不包含域名和请求字串
$url = $request->url(); // 获取请求url,不包含请求字串
$url = $request->fullUrl(); // 包含请求字串(请求字串如:`?id=2`)

$method = $request->method(); //获取请求的方法(get、post)
$bool = $request->isMethod('post'); //判断请求的方法


redirect("index/login"); //重定向
redirect()->action('HomeController@index'); //重定向至控制器行为
复制代码

 

4、路由:

复制代码
Route::get('user/{id}', 'UserController@show')->name('user.show'); //定义指向控制器行为的路由,并命名,访问user/12 —> App\Http\Controllers\UserController 的 function show( $id ){……} 
Route::post('user/{id}', 'Admin\UserController@show'); //同上,对应的控制器是:App\Http\Controllers\Admin\UserController
Route::any('/login','login') -> name('admin.login'); //路由命名
Route::resource('article', 'ArticleController'); //资源路由

路由组:
Route::middleware(["登录验证","权限验证"]) -> group(function(){  …… }; //根据 [中间件] 分组,比如,用于后台模块的身份验证;
Route::name('admin.') -> group(function(){ …… }; //根据 [路由名称] 分组,比如,用于后台,匹配类似 admin.users 的路由;
Route::prefix('index') -> group(function () { …… };//根据 [路由前缀] 分组,比如,用于前台,匹配类似  /index/users 的路由;

 URL生成:
 url("/user/{$id}", ['id' => 1]); //生成url
 action('UserController@show', ['id' => 1]); //为控制器行为 生成url
 route('user.show', ['id' => 1]); //根据路由名称,生成访问url

 URL::signedRoute("/user/{$id}", ['id' => 1]); //生成签名url,通过验证签名,可以防止url被修改
 URL::temporarySignedRoute( "/user/{$id}", now()->addMinutes(30), ['id' => 1] ); //生成带有效时间的签名url
 $request->hasValidSignature(); //验证签名,判断url是否有效,除此之外,还可以通过中间件的方式批量验证;

 url()->current(); // 返回当前url,不包含参数
 url()->full(); // 返回当前url,包含参数

 

复制代码

 


5、数据库:

复制代码
use Illuminate\Support\Facades\DB;

//使用原生sql
$list = DB::select('select * from users where id = ?', [1]); //查找

DB::insert('insert into users (id, name) values (?, ?)', [1, 'jack']); //插入

$affected = DB::update('update users set votes = 100 where name = ?', ['jack']); //更新,返回影响的行数

$deleted = DB::delete('delete from users'); //删除,返回影响的行数
 
//使用事务,发生异常就会回滚

DB::transaction(function () {
  //sql操作
});

//查询构造器
$list = DB::table('user')->where('id', '>', 100)->get(); //返回多行
$row = DB::table('user')->where('id', 11)->first(); //返回一行
$cols = DB::table('user')->pluck('name'); //返回一列
$cols = DB::table('user')->pluck('name', 'id'); //返回一列,用第二个参数做键名

$users = DB::table('users')
->leftJoin('posts', 'users.id', '=', 'posts.user_id')
->get(); //使用leftJoin,类似还有,还有rightJoin、join(Inner Join)

//更多查询构造器使用,可以参考文档
复制代码

 

6、模型:

复制代码
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
  //默认属性:   
protected $table = "my_user"; //对应的表,默认:模型类名称 + 字母s,比如users;   protected $primaryKey = "user_id"; //主键,默认:id;   public $incrementing = false; //模型主键是否自增,默认主键为整形自增;      //时间戳,模型表默认存在 created_at 和 updated_at 俩个字段,模型会在增加、修改时,自动更新;   public $timestamps = false; //是否自动维护时间戳;   const CREATED_AT = "creation_date"; //自定义 created_at 字段名称;   const UPDATED_AT = "last_update"; //自定义 updated_at 字段名称;   protected $dateFormat = "U"; //定义时间戳的显示格式,U表示time()的值, 默认格式为 "Y-m-d H:i:s";   protected $connection = 'connection-name'; //数据库连接;   protected $attributes = [ "name" => "无名" ]; //定义字段属性的默认值;   use SoftDeletes; //开启软删除,需要添加 deleted_at 表字段,如果deleted_at值非空,代表已被软删除; } //查询,每一个模型相当于查询构造器: $list = User::all(); $list = User::where('isOk', 1) //all、get获取多条 ->orderBy('age', 'desc') ->take(10) ->get(); $row = User::where('id', '1')->first(); //first 获取一条 $row = User::find(1); $rows = User::find([1, 2, 3]); //find 根据主键查找 $count = User::where('isOk', 1)->count(); $max = User::where('isOk', 1)->max("price"); $sum = User::where('isOk', 1)->sum("price"); //使用sql函数 //更新 $row = User::find(1); $row->name = 'jack'; $row->save(); //删除 $row->delete(); //使用模型删除 User::where('isOk', 0)->delete(); //批量删除 //软删除 $row->softDeletes(); if ( $row->trashed() ){……} //判断是否软删除 $row->restore(); //撤销软删除,恢复数据 $flight->forceDelete(); //对软删除数据,真正删除
复制代码

 
7、表单验证:使用 手动创建验证器 的方式

复制代码
//一般把验证规则的错误提示信息,集中存放到:resources/lang/xx/validation.php 文件;
Illuminate\Support\Facades\Validator::make( 验证的数据,  验证的规则,  错误提示信息 );

public function save(Request $request)
{

  $messages = [
    'title.required' => '标题必填',
    'title.max' => '标题长度不超过32字',
    'body.required' => '内容必填'
  ];
  $validator = Validator::make( $request->all(), [ 'title' => 'required|max:64', 'body' => 'required', ], $messages );

  if ( $validator->fails() ) {
    return redirect('user/create') //重定向
    ->withErrors($validator) //使用 withErrors 方法把错误消息闪存到 Session 。
    ->withInput();
  }

  // 保存……
}
复制代码

 

 

8、视图:
view( 'index' ); //返回视图,对应 resources/views/index.blade.php 视图文件;
view('admin.index', ['id' => '1']); //返回视图,并传递参数,对应 resources/views/admin/index.blade.php 视图文件; 

 

9、模板引擎:Blade

复制代码
@include('view.name');//导入文件
@include('view.name', ['some' => 'data']);//导入文件,并传递变量

{{ $name }} ;{{ time() }} ;//变量输出

流程控制语句:
1)、判断:

@if ( 2 > 1)
<div>111</div>
@elseif ( 3 > 1 )
<div>222</div>
@else
<div>333</div>
@endif

2)、循环:

@for ( $i = 0; $i < 10; $i++ )
<div> {{ $i }} </div>
@endfor

@foreach ( $rows as $row )
<div> {{ $row->id }} </div>
@endforeach

 3)、原生php代码:

@php
echo "hello";  
@endphp


复制代码

 

其他:



 

posted on   飞哥100  阅读(43)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2017-05-26 react-native支持哪些style样式?

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示