• laravel教程


    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]);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    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_atupdated_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 型态。
    ModifierDescription
    ->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');
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    从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();
    
    • 1
    • 2
    • 3
    多对多关系

    用户表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');
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5

    缓存

    缓存到文件
    use Cache;//门面
    Cache::put('namess',"$users",3600);//保存
    Cache::get('namess');//查
    Cache::forget('namess');//删
    Cache::flush();//删所有
    
    • 1
    • 2
    • 3
    • 4
    • 5
    缓存到redis
    composer require predis/predis     安装
    use Cache;//门面
    Cache::put('namess',"$users",3600);//保存
    Cache::get('namess');//查
    Cache::forget('namess');//删
    Cache::flush();//删所有
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    视图

    return view('greeting', ['name' => 'James']);
    
    输出{{$name}}
    判断
    @if($name=="dade1")
        dade11
    @else
        333
    @endif
    遍历
    @foreach($date as $it)
    {{$it}}
    @endforeach
    
    //public目录下
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  • 相关阅读:
    软件研发的十大浪费:研发效能的另一面
    Java基础—反射
    php 对比两个数组结构是否一致
    【高效开发工具系列】Fork版本管理
    NOI2022游记
    微信小程序自定义按钮触发转发分享功能
    某Al行业四小龙之一:向空间要效率之前,向流程要效率
    WeMos Mini ESP32-S2FN4R2介绍
    实现卡片在鼠标经过有旋转和放大效果(1+X Web前端开发初级 例题)
    ElasticSearch7.3学习(十四)----生产环境实时重建索引
  • 原文地址:https://blog.csdn.net/qq_34631220/article/details/128171908