使用laravel-5.5 过程的问题
- 迁移无法写入表注释
- 迁移单个时候报错误
Nothing to migrate
执行命令php artisan migrate --path=database/migrations/test
相关资料
composer-laravel-schema-extend
laravel迁移扩展-添加注释
laravel迁移扩展-注释 DB::statement("ALTER TABLE
admin_usercomment'平台:用户表'");
使用laravel-5.5 过程的问题
Nothing to migrate
执行命令 php artisan migrate --path=database/migrations/test
composer-laravel-schema-extend
laravel迁移扩展-添加注释
laravel迁移扩展-注释 DB::statement("ALTER TABLE
admin_usercomment'平台:用户表'");
记录laravel-admin使用时遇到的问题
config/filesystems.php
{{ $var or 'default' }}
模板默认值
查看路由表: artisan route:list
"require": {
...
"laravel-admin-ext/summernote": "^1.0",
"spatie/eloquent-sortable": "^3.4",
"spatie/laravel-backup": "^5.0"
...
}
"require-dev": {
...
"barryvdh/laravel-debugbar": "^3.0",
...
}
laravel-admin
官网-laravel-admin
官方-demo-演示
官方-demo-github
laravel-admin-插件库
在管理员字段中如何添加电话和邮箱字段
资源控制器-覆盖默认路由
Grid中导出表格含有中文字符的CSV时出现乱码
laravel-admin表格数据导出乱码问题解决
laravel-debugbar-安装及配置
内置服务器监听端口
not configured, please add a disk config in config/filesystems.php
利用Laravel自带SMTP邮件组件实现发送邮件
laravel获取当前的url以及当前的基础域名方法汇总
EloquentORM关联关系
laravel-admin 实现文章列表、添加、编辑、删除、分页、检索 laravel-admin 基础增删改查
涉及文件
|--app
|--|--Admin
|--|--|--Controllers
|--|--|--|TestController.php #手动创建
|--|--|--routers.php
|--|--Models #手动创建
|--|--|--Movie.php #手动创建
<?php
namespace App\Admin\Controllers;
use App\Models\Movie;
use Encore\Admin\Controllers\AdminController;
use Encore\Admin\Form;
use Encore\Admin\Grid;
class TestController extends AdminController
{
protected $title = '测试';
protected function grid()
{
$grid = new Grid(new Movie());
$grid->id('ID')->sortable();
$grid->title('标题')->editable();
$grid->director()->editable();
$grid->describe()->editable();
$grid->created_at();
$grid->updated_at();
return $grid;
}
protected function form()
{
$form = new Form(new Movie());
$form->display('id', 'ID');
$form->text('title', '标题')->rules('required');
$form->text('director')->rules('required');
$form->text('describe')->rules('required');
$form->display('created_at', 'Created At');
$form->display('updated_at', 'Updated At');
return $form;
}
}
<?php
namespace App\Models;
use Encore\Admin\Form;
use Encore\Admin\Grid;
use Illuminate\Database\Eloquent\Model;
use Spatie\EloquentSortable\Sortable;
use Spatie\EloquentSortable\SortableTrait;
class Movie extends Model implements Sortable
{
use SortableTrait;
protected $table = 'movies';
public $sortable = [
'order_column_name' => 'rate',
'sort_when_creating' => true,
];
public static function grid($callback)
{
return new Grid(new static, $callback);
}
public static function form($callback)
{
return new Form(new static, $callback);
}
}
<?php
use Illuminate\Routing\Router;
Admin::routes();
Route::group([
'prefix' => config('admin.route.prefix'),
'namespace' => config('admin.route.namespace'),
'middleware' => config('admin.route.middleware'),
], function (Router $router) {
$router->get('/', 'HomeController@index')->name('admin.home');
// CURD 路由
$router->resources([
'test' => TestController::class,
]);
});
Tip: 查看composer.json如果下面包没有则需要安装
composer require "spatie/eloquent-sortable:^3.4"
composer require "spatie/laravel-backup:^5.0"
CREATE TABLE `movies` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`director` int(10) unsigned NOT NULL,
`describe` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`rate` tinyint unsigned NOT NULL,
`released` enum('0', '1'),
`release_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Tip: SQL执行报错 ERROR 1067 (42000): Invalid default value for ‘release_at’
处理 === 去掉 sql_mode 中的 values: NO_ZERO_IN_DATE,NO_ZERO_DATE 即可
进入mysql 执行命令 show variables like 'sql_mode';
然后复制值 set session
再重新设置值(Tip: 不要直接复制执行)
sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
laravel-admin 部署安装
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
阿里composer镜像服务
安装laravelcomposer create-project --prefer-dist laravel/laravel blog "5.5.*"
资源发布 php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider"
安装 php artisan admin:install
Tip: 先配置.env
数据库信息
启动服务后,在浏览器打开 http://localhost/admin/
,使用用户名 admin
和密码 admin
登录. Tip: 配置vhost
mojito laravel+elm 前后分离后台
部署安装文档中题的部署出现的问题
环境-mac laradock php-7.2 mysql-5.7 部署mojito1.1.*
ERROR in multi ./resources/assets/js/app.js ./resources/assets/sass/app.scss
Module not found: Error: Can't resolve '/var/www/mojito/resources/assets/js/app.js' in '/var/www/mojito'
@ multi ./resources/assets/js/app.js ./resources/assets/sass/app.scss /js/app[0]
原文档内容
Mix 引入 admin.js
mix.js(‘resources/assets/js/app.js’, ‘public/js’)
.sass(‘resources/assets/sass/app.scss’, ‘public/css’)
//.js(‘resources/js/admin.js’, ‘public/js’) laravel5.7+
.js(‘resources/assets/js/admin.js’, ‘public/js’)
实验后
将下面代码替换文件原来的内容-(文件在跟目录) webpack.mix.js
mix.js('resources/js/app.js', 'public/js')
.sass('resources/sass/app.scss', 'public/css')
.js('resources/js/admin.js', 'public/js');
由于是部署在laradock中所以不能直接访问localhost
nginx-vhost
server {
listen 80;
listen [::]:80;
# For https
# listen 443 ssl;
# listen [::]:443 ssl ipv6only=on;
# ssl_certificate /etc/nginx/ssl/default.crt;
# ssl_certificate_key /etc/nginx/ssl/default.key;
server_name mojito.test;
root /var/www/mojito/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_pass php-upstream;
fastcgi_index index.php;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#fixes timeouts
fastcgi_read_timeout 600;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
location /.well-known/acme-challenge/ {
root /var/www/letsencrypt/;
log_not_found off;
}
error_log /var/log/nginx/laravel_error.log;
access_log /var/log/nginx/laravel_access.log;
}
hosts文件末尾追加
127.0.0.1 mojito.test
浏览器打开:http://mojito.test/mojito#/admin/login
Laravel API接口跨域访问 “Access-Control-Allow-Origin”
创建文件app/Http/Middleware/CORS.php
, 将下面代码复制到文件中.
<?php
namespace App\Http\Middleware;
use Closure;
class CORS
{
public function handle($request, Closure $next)
{
return $next($request)->header('Access-Control-Allow-Origin', '*')
->header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT, DELETE')
->header('Access-Control-Allow-Headers', 'Content-Type, Accept, Authorization,X-Requested-With');
}
}
打开文件: \app\Http\Kernel.php, 找到 protected $middleware 然后增加\App\Http\Middleware\CORS::class,
protected $middleware = [
...
\App\Http\Middleware\CORS::class, //跨域访问中间件
...
];
laravel-mysql-默认为严格的验证方式
Tip: 在Config/database.php中设置’strict’ => false
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => fasle,
'engine' => null,
],
if ($request->isMethod('post')) {
$file = $request->file('picture');
// 文件是否上传成功
if ($file->isValid()) {
// 获取文件相关信息
$originalName = $file->getClientOriginalName(); // 文件原名
$ext = $file->getClientOriginalExtension(); // 扩展名
$realPath = $file->getRealPath(); //临时文件的绝对路径
$type = $file->getClientMimeType(); // image/jpeg
// 上传文件
$filename = date('Y-m-d-H-i-s') . '-' . uniqid() . '.' . $ext;
// 使用我们新建的uploads本地存储空间(目录)
$bool = Storage::disk('uploads')->put($filename, file_get_contents($realPath));
var_dump($bool);
}
}
APP接口版本兼容的问题
APP版本强制升级
APP升级二三事:APP升级场景及功能设计总结
App后端API设计版本问题
PHP / Laravel API 开发推荐阅读清单 有写关于Laravel的资料比较久