首页 > 其他分享 >laravel 安装

laravel 安装

时间:2023-02-28 14:12:01浏览次数:48  
标签:laravel index get artisan table php 安装 id

通过composer安装laravel

composer create-project --prefer-dist laravel/laravel=5.6.* www.blog.com

# 创建项目
create-project

# 以压缩方式下载
--prefer-dist

# 下载的版本
laravel/laravel=5.6.*

# 自定义项目名称
www.blog.com



composer require 安装指定的源码包
composer self-update 软件更新

composer autoload-dump
composer dump

更换国内源

composer config -g repo.packagist composer https://packagist.phpcomposer.com

备选

composer config -g repo.packagist composer https://packagist.laravel-china.org

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

phpstorm支持插件安装

composer require barryvdh/laravel-ide-helper --dev

#config/app中添加
Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class, 

# terminal运行
php artisan ide-helper:generate

composer require barryvdh/laravel-debugbar --dev
Barryvdh\Debugbar\ServiceProvider::class, 

composer require mpociot/laravel-test-factory-helper --dev
Mpociot\LaravelTestFactoryHelper\TestFactoryHelperServiceProvider::class,

3、mpociot/laravel-test-factory-helper

输入指令php artisan test-factory-helper:generate后,database/factory/ModelFactory.php模型工厂文件会自动生成各个模型对应字段数据。Faker是一个好用的生成假数据的第三方库,而这个开发插件会自动帮你生成这些属性,不用自己写了



运行laravel框架

  1. 命令行模式运行
php artisan serve

php artisan serve --port=8000

Laravel5.5在nginx访问自定义路由返回404错误

nginx解决办法:

在location /里面加上 try_files $uri $uri/ /index.php?$query_string;

如果配置文件中存在 try_files $uri $uri/ =404;需要将它注释掉或者删掉,否则会报错

    location /{
        root /root/laravel_test/public;
        index index.html index.htm index.php;
        try_files $uri $uri/ /index.php?$query_string; 
    }


四种定义路由的规则

Route::请求方式('uri', 匿名函数);
Route::请求方式('uri', 控制器名@方法名);

# 从服务器获取资源(一项或多项) select
Route::get($uri, $callback);
# 在服务器新建一个资源 insert
Route::post($uri, $callback);
# 在服务器更新资源 update
Route::put/patch($uri, $callback);
# 从服务器删除资源 delete
Route::delete($uri, $callback);

Route::match(['get', 'post'], 'req', function(){
    return 'get.post';
});

Route::any('/req', function(){
    return 'any';
});

路由参数

# 必填
Route::get('article1/{id}',function($id){
    dump($id);
});

# 可选参数
Route::get('article2/{id?}',function($id = 0){
    dump($id);
});

# 参数限制
Route::get('article3/{id}', function($id){
    dump($id);
})->where(['id'=>'\d+']);

路由别名

# 方便管理生成的url
Route::get('qq/{id}', function($id){
    dump($id);
})->name('index.req');

Route::get('qq1/{id}', function($id){
    # 方便权限控制
    return route('index.qq');
});

路由分组

# 路由前缀
Route::group(['prefix' => 'admin'], function(){
    Route::get('index', function(){
        return 'admin.index';
    });
});

查看定义好的路由

# 查看定义好的路由
php artisan route:list

控制器创建

# 一般控制器创建
php artisan make:controller HelloworldController

# 
php artisan make:controller LoginController -r [--resource]

#
php artisan make:controller Admin/LoginController -r

控制器目录下

# 控制器目录下
Route::group(['namespace' => 'Admin'], function(){
    Route::get('admin/index', 'LoginController@index');
});


Route::get('admin/index', 'Admin\LoginController@index')->name('admin.index');

请求

Input::get('参数的名称', '没有参数的默认值');
# 获取用户所有的输入
Input::all();
# 获取指定的输入 白名单
Input::only([]);
# 获取指定之前的所有输入 黑名单
Input::except([]);
# 判断某输入是否存在
Input::has('名称');

Request 依赖注入
$request->get();
$request->all();
$request->only();
$request->except();
$request->has();
$request->isMethod();
$request->cookie();

返回

return 'string';  or  echo "string";

# 投置cookie
response('')->cookie('id', 111, 10, '/');
# cookie($name, $value, $minutes, $path, $domain, $secure, $httpOnly);
#读取cookie
request()->cookie('id');

重定向

# 路由别名
return redirect()->route('路由别名');

json返回数据

return response()->json(['key'=>'value']);

视图

# 模版  /resources/views/
view('模版');
view('index.html');

view('index.html', ['data'=>$data]);

view('index.html', compack('data'));

view('index.html')->with(['data'=>$data]);

模版赋值

{{ $data['id'] }}

三元运算

{{ $data['id'] or '没有值' }}

未转义的输出

$title = "<a href='www.baidu.com'>百度</a>"
{!! $title !!}

原形态输出

Hello, @{{$变量名}}   

原样输出 vue就可以解析调用

使用函数

{{ date('Y-m-d') }}

if语句

@if (count($recodes) === 1) 
    我有一条数据
@elseif (count($recodes) > 1)
    我有多条数据
@else
    我没有数据
@endif

foreach

@foreach ($usres as $key => $user)
    {{ $user->name }}
    # 当前循环迭代的索引 起始为0
    $loop->index; 
@endforeach

@forelse ($users as $key => $user)

@empty
    如果没有就是这个
@endforelse

模版包含

@include('public.header');
# 表示 view/public/header.blade.php文件

模版继承

# 模版继承
@extends('public.main')
# 赋值第一次方法
@section('title', '我是去赋值的')
# 赋值第二次方法
@section('content')
    <div>我就是一个去赋值的</div>
@endsection



# 点位符
@yield('title')

表单验证


# 控制器
$this->validate($request, [
    'username' => 'require|min:18'
],[
    'username.require' => '姓名不能为空',
    'username.min' => '姓名不能少于18位'
]);

# 模版 错误展示
@if($errors->any())

@endif


# 正确回显
{{ old('username') }}



# 生成验证规则
php artisan make:request UserRequest

rules

csrf

# 5.6
@csrf

{{ csrf_token() }}
{{ csrf_field() }}

把默认的报错信息换成中文

packagist.org

lang

数据库

utf8mb4  utf8mb4_union_ci
# 加个表前缀
.env  
config/databases

插入数据

$sql = "insert into table(username, password) values (:username, :password)";
DB::insert($sql, ['username'=> 'admin', 'password' => 'admin88']);

$sql = "update table set name=:name where id=:id";
DB::update($sql, ['name'=>'hah', 'id'=>1]);

$sql = "select * from table where id=:id";
DB::selectOne($sql, ['id' => 1]);

$sql = "select * from table";
DB::select($sql);

$sql = "delete table where id=:id";
DB::delete($sql, ['id' => 1]);


# 查询所有 get 还条件  all不能带条件
DB::table('table')->where('id', '>=', 10)->get(['name', 'age']);
DB::table('users')->when($kw, function($query) use ($kw){
    $query->where('username', 'like', "%100%")
})->get();

# 获取单条数据
->first();
# 获取某个具体的值
->value('name');
# 获取一列数据
->pluck('name','id');
# 排序操作
->orderBy('sort', 'desc');
# 查询总记录条数
->count();
# 分页获取
->offset(0)->limit(2)->get()

# 添加数据
DB::table('table')->insert([
    'name' => 'admin'
]);

DB::table('table')->instertGetId([
    'name' => 'admin'
]);

# 修改
DB::table('users')->where('id', 1)->update([
    'name' => 'admin'
]);

# 删除
DB::table('users')->where('id', 1)->delete();

数据库迁移

# create_test_table 生成文件的后缀名称  --create=test生成表名为test的数据表
php artisan make:migration create_test_table --create=test

# 执行数据迁移
php artisan migrate

# 执行数据回滚
php artisan migrate:rollback

# 清除后再回滚
php artisan migrate:refresh

数据填充

php artisan make:seeder TestTableSeeder{种子文件名}

执行数据填充

php artisan db:seed --class=执行种子文件名称
php artisan db:seed


php artisan migrate:refresh --seed //databaseseeder文件中定义call方法

创建模型

php artisan make:model 目录名称/模型名称

php artisan make:model Models/Article

# 生成迁移文件
php artisan make:model Models/Article -m

模型限制

$table = '';
$primaryKey = '';
public $timestamps = false;

# 白名单
$fillable = [];
# 黑名单
$ guarded = [];

添加数据

(new model)->save($data);
model::insert($data);

model::create($data)

# 模型识别
php artisan ide-helper:models  

修改数据

查询--修改--save
save();
update();

删除

# 真删除
delete();
destory($id);

# 输删除
1. 字段中要有deleted_at
2. 模型中引入 trait SoftDeleted
3. $dates = ['deleted_at'];

数据填充

faker
模型中database/seeds中添加

php artisan make:factory ArticleFactory -m Models/Aritcle

模型

# -m生成迁移文件
php artisan make:model Models/Article -m

php artisan make:seeder ArticleSeeder

database/seeds/DatabaseSeeder.php
 $this->call(Article::class);   

# -m 指定模型
php artisan make:factory ArticleFactory -m Models/Article
安照迁移文件内容写数据文件

database/seeds/ArticleSeeder.php
# 10条数据  app配置文件中加上locate_faker = 'zh_CN'
factory(Article::class, 10)->create('zh_CN');

php artisan migrate:refresh --seed

模型监听器 自动完成字段值

php artisan make:observer ArticleObserver

creating created updating updated deleting deleted

Models/Article 

protect $dispechEven = ['creating', Article::class];

protect static function boot() {
    static::observer(ArticleObserver::class);
}

数据分页

Article::paginate(env('PAGESIZE'))

{{ $data->appends(request()->except(['page'])->links() }}

session

# 投置session
Session::put('键名','值');
session('键名','值');

# 读取
Session::get(值, 默认值)
session();
session()->all()

# 判断
Session::has('')
session()->has()

# 删除 一个
Session::forget('名称');
session()->forget('名称');
# 删除全部
Session::flush();
session()->flush();

闪存数据 只能保留到下一个HTTP请求,然后就会删除

Session::flash('msg','你好世界');
session()->flash('msg','你好世界');
redirect()->route('session.index')->with('msg','你好世界')

中间件

php artisan make:middleware 中间件名


# 全局中间件

# 路由中间件

设置缓存

use Cache;
Cache::add(key, value, time);
Cache::put(key, value, time);
# 设置永久
Cache::forever(key, value)

# 获取
Cache::get(key)
Cache::get(key, default)
Cache::get(key, function(){})

# 获取的同时并存储
Cache::remember('user', $time, function(){
    return key 不存在时反回的数据
})

Cache::has(key)
# 先获取再删除
Cache::pull('key')
Cache::forget('key')
Cache::flush();

快捷键

phpstorm setting Tools Command Line Supporty + 别名 artisan路镜 ctrl+shift+x

文件上传

# 获取文件后缀
$file = $request->file('文件表单名称')->getClientOriginalExtension();
$request->hasFile('文件表单名称');
$request->file(文件表单名称')->move(path, name);

关联表

# 一对一
$this->hasOne('关联model', ['关联model的联系键'],['本model的联系键']);

return $this->hasOne(User::class, ['user_id'], ['id'])

控制器中使用
$user = user::with('userinfo')->where('id', 1)

$user->userinfo->body;

# 一对多
$this->hasMany('关联model', ['关联model的联系键'],['本model的联系键']);

return $this->hasMany(User::class, ['user_id'], ['id'])

控制器中使用
$user = user::with(['article'=>function($query){
    $query->where('id', '>', 1);
}])->where('id', 1)->first();

$user->article

# 多对多 
$this->belongsToMany('关联model', '中间表表名','中间表本model的关联ID','中间表中关联model的关联ID');

$this->belongsToMany(App\User::class,'user_auth_table','user_id','auth_id') 

$user->find(1)->auths->toArray()

$request->route()->getName();//获取别名

$user->auths()->sync([1,2]);

标签:laravel,index,get,artisan,table,php,安装,id
From: https://www.cnblogs.com/fuqian/p/17164059.html

相关文章

  • 22. Laravel 模型关联:更多使用方法 – 2
    Laravel模型关系:多态关联配套视频地址:https://www.bilibili.com/video/av73028135?p=6多态一对一项目:运营人员就一个图片,发布一篇博客或者一篇文章。表articles......
  • 26. Laravel 广播 – 公有广播
    Laravel广播–公有广播配套视频地址:https://www.bilibili.com/video/av78577184配置配置驱动"pusher","redis","log","null"//.envnpminstall-......
  • 25. Laravel 事件
    Laravel事件配套视频地址:https://www.bilibili.com/video/av77534496目的:解耦。简介:监听器监听到事件的发生,会执行handler方法。//原始代码publicfunctionreg......
  • 24. Laravel 缓存
    Laravel缓存配套视频地址:https://www.bilibili.com/video/av77035719配置与准备配置文件:config/cache.php,.env可配置内容:1.使用哪个驱动2.驱动的配置......
  • 28. Laravel 内置聊天室
    Laravel内置聊天室配套视频地址:https://www.bilibili.com/video/av80196918配置打开config/app.php中BroadcastServiceProvider注释,即注册广播授权路由。在.e......
  • 27. Laravel 广播 – 私有频道
    Laravel内置聊天室配套视频地址:https://www.bilibili.com/video/av80196918配置打开config/app.php中BroadcastServiceProvider注释,即注册广播授权路由。在.e......
  • 30. Laravel 开发第三方包
    Laravel开发第三方包使用Contracts代替Facades,因为扩展包不能访问Laravel提供的所有测试Facades的辅助函数。自动发现和注册Facades"extra":{"laravel......
  • 29. Laravel 广播系统补充
    Laravel广播系统补充配套视频地址:https://www.bilibili.com/video/av80196918?p=2设置广播名称//默认是事件的类名publicfunctionbroadcastAs(){return's......
  • Laravel 最佳实践
    Laravel最佳实践翻译来源:https://github.com/alexeymezenin/laravel-best-practices单一职责原则不要这样做:publicfunctiongetFullNameAttribute(){if(aut......
  • Laravel 核心概念
    Laravel核心概念配套视频地址:https://www.bilibili.com/video/av76060293核心概念简介、服务容器、服务提供者、facade、contract、生命周期。简介我叫Laravel。......