window本地保存Local Storage
保存:window.localstarage.setItem(‘名’,‘值’);
查询:window.localstarage.getItem(‘名’);
删除:window.localstarage.clear(‘名’);
laravel
安装laravel:composer create-project --prefer-dist laravel/laravel blog
查看路由:php artisaan
删除文件后:composer dump
创建控制器:php artisan make:controller Admin\PhotoController
创建中间件:php artisan make:middleware 中间件名
创建验证器:php artisan make:request 验证器名.
创建迁移文件:php artisan make:migration create_users_table --create=users
执行迁移文件:php artisan migrate
回滚迁移文件:php artisan migrate:rollback
php artisan migrate:rollback --step=5
清除表后在执行迁移文件:php artisan migrate:refresh
创建数据填充文件:php artisan make:seeder UserSeeder
# 执行指定种子的文件
php artisan db:seed --class=需要执行的种子文件名
# 执行全部的种子文件
php artisan db:seed 必须在DatabaseSeeder文件中定义好 call
# 删除表并执行迁移和种子文件
php artisan migrate:refresh --seed 必须在DatabaseSeeder文件中定义好 call
遍历@foreach
模板使用
模板:mb.blado.php
引入:@include(‘mb’)
继承模板:ss.blado.php
内容:里面那一点动态加上yield(‘修改名称’)
继承:@extends(‘ss.blado.php’)
改区域调用@section(‘修改名称’)
@endsection表单验证
第一种
@csrf input类型
第二种
@{{csrf_field()}} input类型
第三种
@endsection 单字符串
创建验证控制器
创建验证器:php artisan make:request 验证器名
‘user’=>‘required’ 不能为空
‘user.required’=>‘不能为空’
方法rules() messages()
DB原生sql
// 添加操作
$ret = DB::insert('insert into test_member (name,age) values (:name,:age,:email)', [':name'=>'张三',':age'=>20,]);
// 修改操作
$ret = DB::update('update test_member set age=:age where id=:id', [':age' => 12, ':id' => 1]);
// 查询 select
\# 查询单条
$ret = DB::selectOne("select * from web64_user where id=:id",[':id'=>$id]);
\# 查询多条
$ret = DB::select("select * from web64_user");
// 删除操作
$ret = DB::delete("delete from test_member where id=:id",[':id'=>1]);
DB构建器操作数据库
查询
# 查询多条 get all
# all不可以接where条件
// 查询所有无条件
$data = DB::table(‘user’)->get();
// 查询所有,并指定字段
$data = DB::table(‘user’)->get([‘name’,‘age’]);
// 获取ID大于5的数据
$ret = DB::table(‘member’)->where(‘id’,‘>=’,5)->get();
# 查询单条记录
$ret = DB::table(‘member’)->where(‘id’, 5)->first();
# 获取某个具体的值
$ret = DB::table(‘member’)->where(‘id’,5)->value(‘name’);
# 获取一列数据
$ret = DB::table(‘member’)->pluck(‘name’);
# 以ID为下标 name为值
$ret = DB::table(‘member’)->pluck(‘name’, ‘id’);
# 排序操作,倒序
$ret = DB::table(‘member’)->orderBy(‘id’,‘desc’)->get();
# 查询总记录数
echo DB::table(‘member’)->count();
# 分页获取数据
$ret = DB::table(‘member’)->orderBy(‘id’,‘desc’)->offset(0)->limit(2)->get();
添加
insert() 可以同时添加一条或多条,返回值是布尔类型。
insertGetId() 只能添加一条数据,返回自增的id。
// 添加数据
$ret = DB::table(‘member’)->insert([
‘name’ => ‘张三丰’,
‘age’ => 50,
‘email’ => ‘ee@ee.com’
]);
// 添加数据并得到插入时的ID值
$id = DB::table(‘member’)->insertGetId([
‘name’ => ‘小华’,
‘age’ => 60,
‘email’ => ‘ff@ff.com’
]);
// 添加多条记录
$ret = DB::table(‘member’)->insert([
[‘name’=>‘AAAA’,‘age’=>20,‘email’=>‘111@111.com’],
[‘name’=>‘BBBB’,‘age’=>30,‘email’=>‘222@222.com’],
]);
修改
$ret = DB::table(‘member’)->where(‘id’, 2)->update([
‘name’ => ‘修改一下’,
‘age’ => 50
]);
删除
// 删除数据
$ret = DB::table(‘member’)->where(‘id’,2)->delete();
数据迁移和数据填充
数据迁移
创建迁移文件:php artisan make:migration create_users_table --create=users
php artisan *make:migration* create_test_table --create=test
create_test_table 生成的文件后缀名称
–create=test 生成表名为test的数据表
执行迁移文件:php artisan migrate
回滚迁移文件:php artisan migrate:rollback
php artisan migrate:rollback --step=5
清除表后在执行迁移文件:php artisan migrate:refresh
数据库表新建字段
$table->bigIncrements('id'); | 递增 ID(主键),相当于「UNSIGNED BIG INTEGER」型态。 |
---|---|
$table->bigInteger('votes'); | 相当于 BIGINT 型态。 |
$table->binary('data'); | 相当于 BLOB 型态。 |
$table->boolean('confirmed'); | 相当于 BOOLEAN 型态。 |
$table->char('name', 4); | 相当于 CHAR 型态,并带有长度。 |
$table->date('created_at'); | 相当于 DATE 型态 |
$table->dateTime('created_at'); | 相当于 DATETIME 型态。 |
$table->dateTimeTz('created_at'); | DATETIME (带时区) 形态 |
$table->decimal('amount', 5, 2); | 相当于 DECIMAL 型态,并带有精度与基数。 |
$table->double('column', 15, 8); | 相当于 DOUBLE 型态,总共有 15 位数,在小数点后面有 8 位数。 |
$table->enum('choices', ['foo', 'bar']); | 相当于 ENUM 型态。 |
$table->float('amount', 8, 2); | 相当于 FLOAT 型态,总共有 8 位数,在小数点后面有 2 位数。 |
$table->increments('id'); | 递增的 ID (主键),使用相当于「UNSIGNED INTEGER」的型态。 |
$table->integer('votes'); | 相当于 INTEGER 型态。 |
$table->ipAddress('visitor'); | 相当于 IP 地址形态。 |
$table->json('options'); | 相当于 JSON 型态。 |
$table->jsonb('options'); | 相当于 JSONB 型态。 |
$table->longText('description'); | 相当于 LONGTEXT 型态。 |
$table->macAddress('device'); | 相当于 MAC 地址形态。 |
$table->mediumIncrements('id'); | 递增 ID (主键) ,相当于「UNSIGNED MEDIUM INTEGER」型态。 |
$table->mediumInteger('numbers'); | 相当于 MEDIUMINT 型态。 |
$table->mediumText('description'); | 相当于 MEDIUMTEXT 型态。 |
$table->morphs('taggable'); | 加入整数 taggable_id 与字符串 taggable_type 。 |
$table->nullableMorphs('taggable'); | 与 morphs() 字段相同,但允许为NULL。 |
$table->nullableTimestamps(); | 与 timestamps() 相同,但允许为 NULL。 |
$table->rememberToken(); | 加入 remember_token 并使用 VARCHAR(100) NULL。 |
$table->smallIncrements('id'); | 递增 ID (主键) ,相当于「UNSIGNED SMALL INTEGER」型态。 |
$table->smallInteger('votes'); | 相当于 SMALLINT 型态。 |
$table->softDeletes(); | 加入 deleted_at 字段用于软删除操作。 |
$table->string('email'); | 相当于 VARCHAR 型态。 |
$table->string('name', 100); | 相当于 VARCHAR 型态,并带有长度。 |
$table->text('description'); | 相当于 TEXT 型态。 |
$table->time('sunrise'); | 相当于 TIME 型态。 |
$table->timeTz('sunrise'); | 相当于 TIME (带时区) 形态。 |
$table->tinyInteger('numbers'); | 相当于 TINYINT 型态。 |
$table->timestamp('added_on'); | 相当于 TIMESTAMP 型态。 |
$table->timestampTz('added_on'); | 相当于 TIMESTAMP (带时区) 形态。 |
$table->timestamps(); | 加入 created_at 和 updated_at 字段。 |
$table->timestampsTz(); | 加入 created_at and updated_at (带时区) 字段,并允许为NULL。 |
$table->unsignedBigInteger('votes'); | 相当于 Unsigned BIGINT 型态。 |
$table->unsignedInteger('votes'); | 相当于 Unsigned INT 型态。 |
$table->unsignedMediumInteger('votes'); | 相当于 Unsigned MEDIUMINT 型态。 |
$table->unsignedSmallInteger('votes'); | 相当于 Unsigned SMALLINT 型态。 |
$table->unsignedTinyInteger('votes'); | 相当于 Unsigned TINYINT 型态。 |
$table->uuid('id'); | 相当于 UUID 型态。 |
Modifier | Description |
---|---|
->after('column') | 将此字段放置在其它字段「之后」(仅限 MySQL) |
->comment('my comment') | 增加注释 |
->default($value) | 为此字段指定「默认」值 |
->first() | 将此字段放置在数据表的「首位」(仅限 MySQL) |
->nullable() | 此字段允许写入 NULL 值 |
->storedAs($expression) | 创建一个存储的生成字段 (仅限 MySQL) |
->unsigned() | 设置 integer 字段为 UNSIGNED |
->virtualAs($expression) | 创建一个虚拟的生成字段 (仅限 MySQL) |
数据填充
创建数据填充文件:php artisan make:seeder UserSeeder
# 执行指定种子的文件
php artisan db:seed --class=需要执行的种子文件名
# 执行全部的种子文件
php artisan db:seed 必须在DatabaseSeeder文件中定义好 call
# 删除表并执行迁移和种子文件
php artisan migrate:refresh --seed 必须在DatabaseSeeder文件中定义好 call
数据库模型
创建模型:php artisan make:model 模型文件名
php artisan make:model Models/Member
# 创建模板并生成迁移文件
php artisan make:model Models/Article –m
// 指定表名
protected $table = ‘member’;
// 指定主键的名称
protected $primaryKey = ‘mid’;
// 时间戳 这里一定要注意它是用的public
public $timestamps = false;
# 白名单
protected $fillable = [‘允许添加的字段名’];
# 黑名单
protected $guarded = [‘拒绝添加的字段名’];
添加
# 方法一
save() # 对象属性方式
# 方法二
insert() #数组方式
# 方法三
create() # 数组方式 需要在模型中设置好fillable或guarded属性 使用
$data = [‘id’=>‘11’,‘name’=>''dade];
User::create($data );
查询
# 查询单条
first()
# 查询多条
get()
# 条件
where()
# 排序
orderBy()
# 取指定的值
value()
# 取指定的列
pluck()
# 查询总记录数
count()
User::first(1);//查单
User::all();//全部
User::where(‘id’,1)->get()->toArray();
User::where(‘id’,1)->get()->value(‘name’);//单要name
User::pluck(‘name’,‘id’);//单要name列
User::count();
User::offset(0)->limit(10)->get();
修改
# 方法一
save() # 对象属性方式
# 方法二
update() # 数组
User::where(‘id’,1)->update($date)
删除
delete()
User::delete(2);
软删除
表加上:deleted_at $table->softDeletes()
模型引入:use SoftDelete
protected $dates=[‘deleted_at’]
控制器
软删除:User::destrog(1);
User::get(); 查,已经不存在
User::onlyTrashed()->get; 查已经删除的
User::restore(); 恢复
数据库模型多表操作
一对一关系
新建两个表 如(user和order)order为主表,user为从表
$this->hasOne(关联model,[关联model的联系键],[本model的联系键]);
return $this->hasOne(Extuser::class, ‘uid’, ‘id’);
# 关联表中的外键名 user_id 本表中的主键ID为id
return $this->hasOne(user::class);
咧子
主order
protected $table = "order";
protected $guarded=[];
public function user(){
return $this->hasOne(user::class,'外键id','主键id');
}
从user
protected $table = “user”;
protected $guarded=[];
控制器中调用
$order = order::with(‘user’)->where(‘id’,1)->first();
dump($order[‘user‘]【’id’])
一对多关系
新建两个表 如(user和order)order为主表,user为从表
# 关联表中的外键名 user_id 本表中的主键ID为id
return $this->hasMany(user::class);
咧子
主order
protected $table = “order”;
protected $guarded=[];
public function user(){
return $this->hasMany(User::class,‘外键的id’,‘主键id’);
}
从user
protected $table = “user”;
protected $guarded=[];
控制器中调用
$arts = order::with(['user'=>function($query){
$query->where('id'>='1');
}])->where('id',1)->first();
多对多关系
用户表User,中间表user_auth,权限表auth
$this-> belongsToMany(关联表model,中间表表名,中间表中本User的关联ID,中间表中关联auth的关联ID);
return $this->belongsToMany(App\User::class, ‘user_auth_table’, ‘user_id’, ‘auth_id’);
咧子
用户表user
protected $table = “user”;
protected $guarded=[];
public function auth(){
return $this->belongsToMany(Auth::class, ‘user_auth’, ‘user_id’, ‘auth_id’);
}
中间表user_auth,不用创建模型
权限表auth
protected $table = “auth”;
protected $guarded=[];
控制器调用
$user = User::find(1);//user第一条数据
$auth = $user ->auth()->toArray();
dump($auth);
dump(array_column(auth ,‘name’));
修改中间表,同步中间表(user用户1只剩下1和2权限)
$user->auth()->syhc([1,2])
wed端session缓存和Cache
Cache
use Cache; # 门面
Cache::put(‘key’, ‘value’, $minutes);
# 设置永久缓存
Cache::forever(‘key’, ‘value’);
读
$value = Cache::get(‘key’);
$value = Cache::get(‘key’, ‘default’);
是否存在
Cache::has(‘key’)
# 删除单个
Cache::forget(‘key’);
# 清除所有的缓存
Cache::flush();
session
use Session # 门面
session([‘key’ => ‘value’]);
session([‘key’);
session::has(‘key’)
session::forget(‘key’);
闪存:Session::forget('nh,‘ss’)
with闪存:return redirect()->route(‘Aadem.index’)->with('nh,‘ss’);
Session('nh‘)
{{Session(‘ket’}}
中间件
创建中间件:php artisan make:middleware 中间件名
路由使用:路由->middleware(‘中间件名称’)
路由
api接口访问要加上api才可以访问到
Route::group(['prefix'=>'v1/admin','namespace'=>'Admin'],function (){
Route::post('login','UsersController@login');
Route::post('login/token','UsersController@token');
Route::post('login/logOut','UsersController@logOut');
});
缓存
缓存到文件
use Cache;//门面
Cache::put('namess',"$users",3600);//保存
Cache::get('namess');//查
Cache::forget('namess');//删
Cache::flush();//删所有
缓存到redis
composer require predis/predis 安装
use Cache;//门面
Cache::put('namess',"$users",3600);//保存
Cache::get('namess');//查
Cache::forget('namess');//删
Cache::flush();//删所有
视图
return view('greeting', ['name' => 'James']);
输出{{$name}}
判断
@if($name=="dade1")
dade11
@else
333
@endif
遍历
@foreach($date as $it)
{{$it}}
@endforeach
//public目录下
<link rel="stylesheet" href="{{ URL::asset('/static/layui/css/layui.css') }}">
<script type="text/javascript" src="{{ URL::asset('js/jquery.min.js') }}"></script>