创建一个laravel 项目
composer create-project laravel/laravel Laralvel --prefer-dist "5.5.*"
登录
mysql -h127.0.0.1 -P3306 -uhomestead -psecret
php -v 、 php -m
版本 、 扩展
创建控制器
php artisan make:controller UserControlle
vagrant
重载
vagrant provision vagrant provision && vagrant reload // 重载
账号密码分别是 homestead / secret
exit
vagrant halt
vagrant up
生成迁移
php artisan help make:migration
php artisan make:migration create_posts_table
php artisan migrate:refresh // 重置数据库并重新运行所有迁移。
生成迁移
php artisan migrate
命名规范
字段添加操作:add_column_to_table --table=users
创建表操作:create_users_table --create=users
phpUnit https://phpunit.readthedocs.io/zh_CN/latest/installation.html#php-phar
validate 中文包
composer require "overtrue/laravel-lang:~3.0"
打开 config/app.php 修改为 'local' => 'zh-CN'
数据库测试文档 - git
http://laravelacademy.org/post/8581.html
github: https://github.com/fzaninotto/Faker
使用tinker 进行数据填充 ()
php atrisan tinker
factory(App\Post::class, 10)->create(); 创建
factory(App\Post::class, 10)->make(); 显示
如何查找门脸类
(1)
定位到该类的目录,找到它对应的字符串
例如: 打开 config/app.php -> 'Log' => Illuminate\Support\Facades\Log::class, 再跳转到Log 类目录下 可见,它引用的是 Psr\Log\LoggerInterface 使用tinker 再项目目录中,使用cmd命令
php artisan tinker app('Psr\Log\LoggerInterface'); 或者 app('Log');即可看到对应的文件下面的方法
artisan 查看可用的命令
php artisan list
初始化laravel
修改 env 中的
- APP_NAME
- APP_URL
- DB_DATABASE
- 将app.php 中的 APP_DEBUG 改为 true // 调试模式
- 'timezone' => 'Asia/ShangHai',
- 'locale' => 'zh-CN'
- 创建自己的自定义的辅助函数/
视图合成器,全局注入
不属于某个专题的文章
分页
$users->links()
使用 create 创建时,需要添加 白名单
全局执行某个sql 查询条件
// 定义一个全局的软删除,当执行查询数据时,是自动进行执行定义的条件
protected static function boot()
{
parent::boot(); // TODO: Change the autogenerated stub
static::addGlobalScope('avaiable', function (Builder $builder){ // avaiable 可以随意修改
$builder->where('status', '1');
});
}
[https://laravel-china.org/docs/laravel/5.4/eloquent/1264#4330c1]
获取中间表字段
return $this->belongsToMany('App\Role')->withPivot('column1', 'column2');
移除相关信息 detach
return $this->roles()->detach($role);
contains 方法判断集合是否包含一个给定项:
@if($MyPermissions->contains($permission))
checked
@endif
findMany 获取的是一个集合
返回之前的页面
return back();
查询用户不存在时触发错误
User::findOrFail(5)
添加语言包
composer require "overtrue/laravel-lang:~3.0"
在config/app.php 中 设置
'locale' => 'zh-CN',
使用 Laravel attempt 实现认证
如果用户被找到:
1). 先将传参的 password 值进行哈希加密,然后与数据库中 password 字段中已加密的密码进行匹配;
2). 如果匹配后两个值完全一致,会创建一个『会话』给通过认证的用户。会话在创建的同时,也会种下一个名为 laravel_session 的 HTTP Cookie,以此 Cookie 来记录用户登录状态,最终返回 true;
3). 如果匹配后两个值不一致,则返回 false;
如果用户未找到,则返回 false。
闪存一条session 提示信息
session()->flash('success' , '欢迎回来');
生成一个授权策略文件
php artisan make:policy UserPolicy
时间戳
$created_at->diffForHumans();
// https://laravel-china.org/courses/laravel-essential-training-5.5/610/according-to-weibo
// => "17 years ago"
// 生成的时间是 英文的
在 AppServiceProvider 中 添加 Carbon::setLocale('zh');
模型关联
allRelatedIds 是 Eloquent 关联关系提供的 API,用来获取关联模型的 ID 集合。
attach 在关联表上创建一个多对多的关联数据
detach 在关联表上删除一个多对多的关联数据
sync // $user->followings()->sync([3], false) , true 为移除 , flase 不移除, 保持关系
fill 方法会将传参的键值数组填充到模型的属性中
$topic->fill($request->all());
$topic->user_id = Auth::id();
$topic->save();
asset 函数使用当前请求的 scheme(HTTP 或 HTTPS)为前端资源生成一个 URL:
验证码
安装: composer require "mews/captcha:~2.0"
生成: php artisan vendor:publish --provider='Mews\Captcha\CaptchaServiceProvider'
查看: config/captcha.php
验证器验证:return Validator::make($data, [
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
'captcha' => 'captcha|required'
],[
'captcha.required' => '验证码不能为空',
'captcha.captcha' => '验证码错误,请重试',
]);
处理复杂逻辑的表单请求
https://laravel-china.org/docs/laravel/5.5/validation/1302#form-request-validation
php artisan make:request UserRequest
上传图片
见笔记
url 返回上一页
url()->previous()
代码生成器 | Laravel 5.x Scaffold Generator
安装 composer require "summerblue/generator:~0.5" --dev
php artisan make:scaffold Projects --schema="name:string:index,description:text:nullable,subscriber_count:integer:unsigned:default(0)"
会根据命令生成相应的文件
数据填充
Debugbar
composer require "barryvdh/laravel-debugbar:~3.1" --dev
生成配置文件
php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"
打开 config/debugbar.php,将 enabled 的值设置为:
'enabled' => env('APP_DEBUG', false),
导航的 Active 状态
样式是 Bootstrap 框架的 导航栏组件 提供。
composer require "hieu-le/active:~3.5"
使用:
话题
分享
教程
问答
公告
最后回复
// if_query 获取当前get 请求中的某项数据
问题
{!! $topics->appends(Request::except('page'))->render() !!}??? 什么意思
观察者| 事件
loquent 模型会触发许多事件(Event),我们可以对模型的生命周期内多个时间点进行监控: creating, created, updating, updated, saving, saved, deleting, deleted, restoring, restored。
事件让你每当有特定的模型类在数据库保存或更新时,执行代码。
当一个新模型被初次保存将会触发 creating 以及 created 事件。
如果一个模型已经存在于数据库且调用了 save 方法,将会触发 updating 和 updated 事件。在这两种情况下都会触发 saving 和 saved 事件。
快速入门 -> 观察器
使用方法:
在Observers 中创建相应的| 例如 TopicObservers
需要在 AuthServiceProvider 中使用boot方法注册 (示例)[https://laravel-china.org/docs/laravel/5.5/eloquent/1332#2844b8]
Topic::observe(TopicObserver::class);
队列 使用 Redis 来作为我们的队列驱动器
composer require "predis/predis:~1.0"
失败任务
php artisan queue:failed-table
自动增长
$reply->topic->increment('reply_count' , 1);
生成消息通知
php artisan notifications:table // 创建通知表
php artisan make:notification TopicReplied // 生成通知类
makeVisible 显示临时隐藏的属性
密码更改发生的位置
vendor/laravel/framework/src/Illuminate/Foundation/Auth/ResetsPasswords.php
生成命令类
php artisan make:command CalculateActiveUser --command=larabbs:calculate-active-user // App\Consloe
清除缓存
php artisan cache:clear
计划任务
export EDITOR=vi && crontab -e
在 该文件中添加
* * * * * php /home/vagrant/Code/larabbs/artisan schedule:run >> /dev/null 2>&1
打开
app/Console/Kernel.php // 定时执行命令
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')
// ->hourly();
// 一小时执行一次『活跃用户』数据生成的命令
$schedule->command('larabbs:calculate-active-user')->hourly();
}
发起 http 请求的类库 | 等等
HTTP 请求:GuzzleHttp
验证码 Gregwar/Captcha https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx0c2ebfe7751517da&redirect_uri=http://sbbs.test&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx0c2ebfe7751517da&secret=3a915dac3b173cda2cc5bd67e7655083&code=071dz6Ra1jkxdv0I4KPa1kZoRa1dz6Rl&grant_type=authorization_code // code 来获取
access_token: "11_8IVEt0tUpbcMLkBqegLd0t_TXIJnQej-p9P0K5q3Y84ETJabBAknBmluLIu4UqNjv3SHWXBliZx6lCD6_07sqQ" expires_in: 7200 openid: "oNUlL03piNvdJtOXBC2ERX-dLFBk" refresh_token: "11_ZqRUerScIcsIysjP9wTi5t3nNkYAFSqoyJqZMMPJa_vhh7SKV5woeLzUCCa-C4vx1EzXUDe146wiZTU5QuHKAQ" scope: "snsapi_userinfo"
Route::auth()
// Authentication Routes...
Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
Route::post('login', 'Auth\LoginController@login');
Route::post('logout', 'Auth\LoginController@logout')->name('logout');
// Registration Routes...
Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
Route::post('register', 'Auth\RegisterController@register');
// Password Reset Routes...
Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
Route::post('password/reset', 'Auth\ResetPasswordController@reset');
获取到后缀名
getClientOriginalExtension
调试
composer require barryvdh/laravel-debugbar | https://laravel-china.org/topics/2531/extension-recommended-laravel-debugbar-development-debugging-tools
本文由 邓尘锋 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: May 4, 2019 at 11:40 am