安装
composer create-project laravel/laravel laravel --prefer-dist “6.0.*”
安装laravel-admin
https://laravel-admin.org/docs/zh/installation
composer require encore/laravel-admin
php artisan vendor:publish --provider=“Encore\Admin\AdminServiceProvider”
php artisan admin:install
上传测试服务器
git pull
composer install --no-dev
服务器上安装composer,并使用composer self-update
更新到最新版
用ftp上传文件,保持目录结构。注意不要上传vendor文件夹
到项目目录下,使用命令composer install --no-dev
安装依赖
使用composer dump-autoload -o
优化自动加载
监听打印mysql
php artisan make:listener QueryListener --event=Illuminate\\Database\\Events\\QueryExecuted
打开 app/Providers/EventServiceProvider.php ,在 $listen 中添加
protected $listen = [
Registered::class => [
SendEmailVerificationNotification::class,
],
'Illuminate\Database\Events\QueryExecuted' => [
'App\Listeners\QueryListener',
]
];
<?php
namespace App\Listeners;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Database\Events\QueryExecuted;
use Illuminate\Support\Facades\Log;
class QueryListener
{
public function handle (QueryExecuted $event)
{
if (env('APP_ENV', 'production') == 'local') {
$sql = str_replace("?", "'%s'", $event->sql);
$log = vsprintf($sql, $event->bindings);
Log::info($log);
}
}
}
操作新增 用户拉黑
php artisan admin:action UserAccountController\\pullBlack --grid-row --name='拉黑'
<?php
namespace App\Admin\Actions\UserAccountController;
use Encore\Admin\Actions\RowAction;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Log;
class pullBlack extends RowAction
{
public $name = '拉黑';
public function handle(Model $model)
{
$model->role_id = 7;
$model->save();
return $this->response()->success('拉黑成功')->refresh();
}
public function dialog()
{
$this->confirm('确定拉黑?');
}
}
新增help辅助函数 需要更新
composer dump-autoload
控制器监听数据库sql
DB::listen(function ($query){
Log::info($query->sql);
});
模型数据绑定重置绑定关系,解决n+1查询
绑定$with=’’(初始化数据结构)
protected static function boot()
{
parent::boot();
static::addGlobalScope('phone', function (Builder $builder) {
$builder->with('useracc');
});
}
多对多关联,穿梭多选
实现角色编辑权限,穿梭多选效果
一个角色对应N个权限,一个权限属于N个角色,角色和权限属于多对多模型
对角色进行编辑所属权限,展示位权限名称
role控制器
protected function form()
{
$form = new Form(new UserRole());
$form->text('name', __('Name'));
$form->text('description', __('Description'));
$form->listbox('rolepermissions')->options(UserPermission::all()->pluck('name', 'id'));
return $form;
}
role model
user_role_permissions 中间表
public function rolepermissions(){
return $this->belongsToMany(UserPermission::class,'user_role_permissions','role_id','permission_id');
}
显示:
detail:
//rolepermissions 多对多
$show->rolepermissions('权限', function ($rolepermissions) {
$rolepermissions->resource('/admin/userpermissions');//可以在查看的时候进行权限的新增删除
$rolepermissions->id();
$rolepermissions->name();
$rolepermissions->description();
});