laravel笔记1
Laravel笔记
1、 安装laravel
安装composer
php -r "copy('https://getcomposer.org/installer',
'composer-setup.php');"
配置中国镜像:composer config -g repo.packagist composer
https://packagist.phpcomposer.com
composer create-project laravel/laravel=5.8.*(版本号) 项目名 --prefer-dist
(已经安生成APP_KEY)无需:php artisan key:generate
2、
修改文件
config/app.php 设置中国时区 :timezone=’ Asia/Shanghai’(RPC)
.evn 设置连接数据库
/ 运行环境名称 APP_ENV=local
// 调试模式,开发阶段启用,上线状态禁用。APP_DEBUG=true
// 敏感信息加密密钥,可使用 php artisan key:generate 重新生成。APP_KEY=
// 项目根目录 APP_URL=http://localhost
// 缓存驱动,默认使用文件作为缓存。 CACHE_DRIVER=file
// 回话驱动,默认使用文件存储SESSION。 SESSION_DRIVER=file
// 队列驱动,默认使用同步模式。QUEUE_DRIVER=sync
// Redis高性能key-value数据库,使用内存存储,用于数据持久化。
REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379
// 数据库配置项
DB_HOST=127.0.0.1//数据库主机名
DB_PORT=3306//数据库端口
DB_DATABASE=homestead//数据库名称
DB_USERNAME=homestead//数据库登录账户
DB_PASSWORD=secret//数据库登录密码
3、配置全局方法
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\\": "app/"
}, //设置全局变量的文件
"files": [
"app/helpers.php"
]
}
4、laravel中artisan 使用
查看artisan 命令php artisan list
查看某个帮助命令php artisan help make:model
查看laravel版本 php artisan --version
使用 PHP 内置的开发服务器启动应用php artisan serve
生成一个随机的 key,并自动更新到 app/config/app.php 的 key 键值对(刚安装好需要做这一步) php artisan key:generate
开启Auth用户功能(开启后需要执行迁移才生效) php artisan make:auth
开启维护模式和关闭维护模式(显示503)
php artisan down php artisan up
进入tinker工具 php artisan tinker
列出所有的路由 php artisan route:list
生成路由缓存以及移除缓存路由文件 php artisan route:cache php artisan route:clear
功能篇
创建控制器php artisan make:controller StudentController
创建Rest风格资源控制器(带有index、create、store、edit、update、destroy、show方法) php artisan make:controller PhotoController --resource
创建模型 php artisan make:model Student
创建新建表的迁移和修改表的迁移
php artisan make:migration create_users_table --create=students //创建students表
php artisan make:migration add_votes_to_users_table --table=students//给students表增加votes字段
执行迁移 php artisan migrate
创建模型的时候同时生成新建表的迁移
php artisan make:model Student -m
回滚上一次的迁移
php artisan migrate:rollback
回滚所有迁移
php artisan migrate:reset
创建填充
php artisan make:seeder StudentTableSeeder
执行单个填充
php artisan db:seed --class=StudentTableSeeder
执行所有填充
php artisan db:seed
创建中间件(app/Http/Middleware 下)
php artisan make:middleware Activity
创建队列(数据库)的表迁移(需要执行迁移才生效)
php artisan queue:table
创建队列类(app/jobs下):
php artisan make:job SendEmail
创建请求类(app/Http/Requests下)
php artisan make:request CreateArticleRequest
php artisan:显示详细的命令行帮助信息,同 php artisan list
php artisan –help:显示帮助命令的使用格式,同 php artisan help
php artisan –version:显示当前使用的 Laravel 版本
php artisan changes:列出当前版本相对于上一版本的主要变化
php artisan down:将站点设为维护状态
php artisan up:将站点设回可访问状态
php artisan optimize:优化应用程序性能,生成自动加载文件,且产生聚合编译文件 bootstrap/compiled.php
php artisan dump-autoload:重新生成框架的自动加载文件,相当于 optimize 的再操作
php artisan clear-compiled:清除编译生成的文件,相当于 optimize 的反操作
php artisan migrate:执行数据迁移
php artisan routes:列出当前应用全部的路由规则
php artisan serve:使用 PHP 内置的开发服务器启动应用 【要求 PHP 版本在 5.4 或以上】
php artisan tinker:进入与当前应用环境绑定的 REPL 环境,相当于 Rails 框架的 rails console 命令
php artisan workbench 组织名/包名:这将在应用根目录产生一个名为 workbench 的文件夹,然后按 组织名/包名 的形式生成一个符合 Composer 标准的包结构,并自动安装必要的依赖【需要首先完善好 app/config/workbench.php 文件的内容】
php artisan cache:clear:清除应用程序缓存
php artisan command:make 命令名:在 app/commands 目录下生成一个名为 命令名.php 的自定义命令文件
php artisan controller:make 控制器名:在 app/controllers 目录下生成一个名为 控制器名.php 的控制器文件
php artisan db:seed:对数据库填充种子数据,以用于测试
php artisan key:generate:生成一个随机的 key,并自动更新到 app/config/app.ph 的 key 键值对
php artisan migrate:install:初始化迁移数据表
php artisan migrate:make 迁移名:这将在 app/database/migrations 目录下生成一个名为 时间+迁移名.php 的数据迁移文件,并自动执行一次 php artisan dump-autoload 命令
php artisan migrate:refresh:重置并重新执行所有的数据迁移
php artisan migrate:reset:回滚所有的数据迁移
php artisan migrate:rollback:回滚最近一次数据迁移
php artisan session:table:生成一个用于 session 的数据迁移文件
5、安装验证码
composer require mews/captcha
1)注册providers (config/app.php)Mews\Captcha\CaptchaServiceProvider::class,
2)注册aliases (config/app.php)'Captcha' => Mews\Captcha\Facades\Captcha::class,
3)生成配置文件config/captcha.php(出现下图提示的话,根据红圈输入相关数字回车即可) php artisan vendor:publish
4)页面中使用验证码
<div class="row">
<div class="col-md-8">
<input type="text" class="form-control {{$errors->has('captcha')?'parsley-error':''}}" name="captcha" placeholder="captcha">
</div>
<div class="col-md-4">
<img src="{{captcha_src()}}" style="cursor: pointer" onclick="this.src='{{captcha_src()}}'+Math.random()">
</div>
@if($errors->has('captcha'))
<div class="col-md-12">
<p class="text-danger text-left"><strong>{{$errors->first('captcha')}}</strong></p>
</div>
@endif
</div>
6、自定义登录
1)首先创建后台用户表
php artisan make:migration CreateAdminUserTable
2)打开创建的数据库文件 (\database\migrations\刚生成的文件) 打开设置表字段 更改自己的字段信息
3)填充数据
php artisan make:seeder AdminUserTableSeeder
打开AdminUserTableSeeder.php
public function run()
{
$data = [
'name' => 'admin',
'email' => '1065628795@qq.com',
'password' => bcrypt('123456'),
'ip' => '127.0.0.1'
];
DB::table('admin_user')->insert($data);
}
4)在seeds/DatabaseSeeder.php注册一下
public function run()
{
// $this->call(UsersTableSeeder::class);
$this->call(AdminUserTableSeeder::class);
}
5)执行数据填充命令
php artisan db:seed
6)自定义模型表。
1:假设登录数据表是admin。这里修改config目录下的auth.php
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
'admin' =>[ //新增
'driver' => 'session',
'provider' => 'admins',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'admins' =>[ //新增
'driver' =>'eloquent',
'model' => Models\Admin::class, //模型的位置,这里我放在Models目录,laravel默认在app目录下,你可以放在任何目录
7)建立Admin模型
<?php
namespace Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class Admin extends Authenticatable //必须继承这个契约
{
use Notifiable;
protected $table = 'admin'; //表
protected $primaryKey = 'id'; //主键
public $timestamps = false;
protected $fillable = [
'username', 'password',
];
rotected $hidden = [
password',
];
}
这个模型我们直接复制修改laravel默认的User.php模型即可。注意这里:class User extends Authenticatable,一定要extends Authenticatable
8)控制器调用认证
//调用admin,我们在config/auth.php里的guards,新加的admin,上面第一步
Auth::guard('admin')->attempt(['username' => $username, 'password' => $password]]);
//Laravel默认调用user
Auth::attempt(['username' => $username, 'password' => $password]]);
9)//认证后才可以访问
Route::group(['prefix'=>'admin','namespace'=>'Admin','middleware'=>'auth:admin'],function(){
Route::get('/main','MainController@index');
});
7、laravel中默认表名后面多个S,可以在对应的model中添加
public $table=表名
8、获取执行sql语句
DB::enableQueryLog();
执行语句
dd(DB::getQueryLog());