laravel的相关笔记

in Laravel with 0 comment

创建一个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

生成迁移

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(); 显示

如何查找门脸类

artisan 查看可用的命令

php artisan list

初始化laravel

修改 env 中的

视图合成器,全局注入

不属于某个专题的文章

分页

$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 请求的类库 | 等等

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
Comments are closed.