教你使用PHP数据库迁移工具“Phinx”

本篇文章给大家分享关于PHP处理中数据库迁移工具Phinx的相关知识,phinx特别适合在开发、测试、线上数据库同步字段信息、数据信息、生成和同步测试数据等,希望对大家有帮助。

本篇文章给大家分享关于PHP处理中数据库迁移工具Phinx的相关知识,phinx特别适合在开发、测试、线上数据库同步字段信息、数据信息、生成和同步测试数据等,希望对大家有帮助。

教你使用PHP数据库迁移工具“Phinx”

php零基础到就业直播视频课:进入学习Apipost-比 postman 更好用的 API 文档、设计、调试、自动化测试一体化协作平台!点击使用

文档地址:https://tsy12321.gitbooks.io/phinx-doc/content

1.安装

composer require nhzex/think-phinx

2.执行

php vendor/bin/phinx

直接运行 php vendor/bin/phinx init 可生成配置文件

另外一种方法是直接使用php文件做配置文件

直接运行 php vendor/bin/phinx init 可生成配置文件

另外一种方法是直接使用php文件做配置文件

3.使用phinx.php进行配置

<?php
$config = array(
;DB_HOST; => ;localhost;,
;DB_NAME; => ;root;,
;DB_USER; => ;root;,
;DB_PWD; => ;;,
);
$settings = $config;
#phinx.php
<?php
require ;db_config.php;;
return array(
;paths; => array(
;migrations; => ;db/migrations;,
;seeds; => ;db/seeds;
),
;environments; => array(
;defaut_migration_table; => ;phinxlog;,
;default_database; => ;lleg;,
;default_environment; => ;development;
;production; => array(
;adapter; => ;mysql;,
;host; => $settings[;DB_HOST;],
;name; => $settings[;DB_NAME;],
;user; => $settings[;DB_USER;],
;pass; => $settings[;DB_PWD;],
;port; => 3306,
;charset; => ;utf8;
),
;development; => array(
;adapter; => ;mysql;,
;host; => $settings[;DB_HOST;],
;name; => $settings[;DB_NAME;],
;user; => $settings[;DB_USER;],
;pass; => $settings[;DB_PWD;],
;port; => 3306,
;charset; => ;utf8;
)
)
);

4.执行 php vendor/bin/phinx status 查看连接状态

5.执行 php vendor/bin/phinx create migration

6.现在生成了created /db/migrations/20180310020523_migration.php

编辑这个文件,添加数据库创建内容.

public function change() {
$user = $this->table(;user;);
$user->addColumn(;open_id;, ;string;, [;limit;=>64]);
$user->addColumn(;register_time;, ;timestamp;, [;default; => ;CURRENT_TIMESTAMP;]);
$user->addColumn(;favorite_music;, ;integer;, [;default;=> 0, ;comment;=>;喜欢的音乐;]);
$user->addColumn(;favorite_vedio;, ;integer;, [;default;=> 0, ;comment;=>;喜欢的视频数;]);
$user->addColumn(;favorite_article;, ;integer;, [;default;=> 0, ;comment;=>;喜欢的文章数;]);
$user->addColumn(;baby_birthday;, ;date;, [;null;=>true, ;comment;=>;宝宝生日;]);
$user->addColumn(;baby_sex;, ;boolean;, [;null;=>true, ;comment;=>;宝宝性别;]);
$user->addColumn(;last_login;, ;datetime;, [;null;=>true, ;comment;=>;最后登陆日期;]);
$user->save();
}

7.默认会添加一个自增id,作为主键

执行 php vendor/bin/phinx migrate

8.初始化数据

执行 php vendor/bin/phinx seed:create CategorySeeder

系统自动创建 created ./db/seeds/CategorySeeder.php

9.修改 CategorySeeder.php

执行 php vendor/bin/phinx seed:run 将会进行所有Seed

10.如果想运行指定的Seed需要用- s参数指定

php vendor/bin/phinx seed:run -s CategorySeeder

11.更新表结构

当需要更新表结构的时候,需要再创建一个migrate

执行php vendor/bin/phinx create ChangeArtist

再将需要更新的内容写到change函数

public function change() {
$this->execute(;alter table resource drop column artist ;;);
$resource = $this->table(;resource;);
$resource->addColumn(;artist;, ;string;, [;limit;=>128, ;default;=>;;]);
$resource->update();
}

最后执行php vendor/bin/phinx migrate

之前的已经执行过的migrate不会执行, 只会执行更新的部分。

12.回滚

php vendor/bin/phinx rollback

13.数据填充

php vendor/bin/phinx seed:create UserSeeder
php vendor/bin/phinx seed:run -e product

生成文件

<?php
use Phinx\\Seed\\AbstractSeed;
class UserSeeder extends AbstractSeed {
/**
* 插入数据
*/
public function run() {
$data = array(
array(
;id; => 1,
),
array(
;id; => 2,
)
);
$posts = $this->table(;users;);
$posts->insert($data)->save();
}
}

phinx特别适合在开发,测试,线上数据库同步字段信息,数据信息,生成和同步测试数据等,所以特别适合在团队开发流程中使用,尤其是对于一个新项目,只要在项目的开始就一直坚持使用phinx独立部署,那么每次变更数据库表信息团队成员都可以通过git或者svn的方式同步代码然后执行上面提到的执行命令来同步库表信息,以此避免传统开发时不同开发环境同步库表信息的繁琐和失误的情况。

在phinx.php 有一个配置项”default_migration_table” => “phinxlog” 这里是记录变更记录的,这也是保障不会重复执行的一个措施,所以不用担心丢失或者重复操作执行命令。

ThinkPhp5.1 + jSignature实现在线签名功能

原创2022-03-02 09:49:461280 + 加入Thinkphp讨论小组在线签名,在很多地方都会有所使用,小编最近接了一个项目,里面涉及到审批签名功能,客户要求必须实现手机端实时签名功能,经过研究,利用jSignature库,完成了这一功能,分享出来,供大家参考。

既然使用jSignature库实现签名的制作,当然需要下载jSignature库,小编这里提供下载地址如下,各位小伙伴可前往下载:

https://www.phpclasses.org/browse/file/42277.html

拿到了jSignature库,该怎么去使用,有很多小伙伴可能会卡在这一块,同样,小编为各位提供说明文档,各位可前去查阅:

jsignature 中文开发手册

另外,jsignature 需要配合jQuery库使用,不然某些功能无法展示,同样提供下载地址,供大家下载:

linkDownloading jQuery

当然,jQuery有很多版本,小编使用的是jquery-3.2.1.js

前期的准备功能准备完了,下面为大家提供制作方法。

前端HTML

<style>
.main_sign{
padding: 10px 10px;
color:black;
background-color:darkgrey;
}
.main_sign .sign_btn{
padding: 5px 10px;
}
#signature {
border: 2px dotted black;

}
</style>
<div class="main_sign" id="writers">
<div id='signature' style='background-color: #d2d2e8;'></div>
<button type="button" class="sign_btn" id="reset" style="margin: 10px 5px;">重写</button>
<button type="button" class="sign_btn" id="yes" style="margin: 10px 5px;">确认</button>
<div id="show_img" style="display: none;"><img src="" id="images"></div>
</div>

1 实例化jsignature

$(document).ready(function(){
var arguments = {
width: '100%',
height: '200px',
};
$("#signature").jSignature(arguments);
});

2 重置签名

$("#reset").click(function(){
$("#signature").jSignature("reset"); //重置画布,可以进行重新作画
$("#images").attr('src','');
});

3 提交签名

小编使用的是TP5.1 + ajax提交【相关推荐:thinkphp视频教程】

//点击确定按钮,把签名的转成图片,然后把数据放进图片中,最后把图片中的数据传到后台
$("#yes").click(function(){
//将画布内容转换为图片
var $signature = $("#signature");
var datapair = $signature.jSignature("getData", "image");
$("#images").attr('src','data:' + datapair[0] + "," + datapair[1]);
var src_data = $("#images").attr('src');//拿到图片中的src,这就是我们需要的base64
//console.info(src_data);//显示生成的笔迹图片
//在这里就写我们的后台操作
$.ajax({
url:"{:url('getSignInfo')}",
data:{src_data:src_data},
type:"post",
dataType:"json",
success:function(data){
window.location.href = data.dump_url;
},
error:function(){
console.log("错误");
}
});
});

4 后台数据接收(getSignInfo.php)

$data = Request::param();
$src = $this->base64ContentToImage($data['src_data'],$path);

$src就是我们需要的签名图片保存地址,$path为签名图片的保存路径

5 将图片base64码转化为标准的图片(base64ContentToImage方法)

public function base64ContentToImage($base64_image_content,$path){
$dir = "./".$path;
if(!file_exists($dir)){
mkdir(iconv("GBK", "UTF-8", $dir),0777,true);
}
//匹配出图片的格式
if (preg_match('/^(data:\\s*image\\/(\\w+);base64,)/', $base64_image_content, $result)){
$type = $result[2];
$new_file = $path."/".date('Ymd',time())."/";
if(!file_exists($new_file)){
//检查是否有该文件夹,如果没有就创建,并给予最高权限
mkdir($new_file, 0700);
}
$new_file = $new_file.time().".{$type}";
if (file_put_contents($new_file, base64_decode(str_replace($result[1], '', $base64_image_content)))){
return '/'.$new_file;
}else{
return false;
}
}else{
return false;
}
}

以上就是小编总结的利用TP5.1 + jSignature库生成签名的完整制作方法,希望对大家有所帮助,谢谢!

php零基础到就业直播视频课:立即学习全程直播 + 实战授课 + 边学 + 边练 + 边辅导

以上就是ThinkPhp5.1 + jSignature实现在线签名功能的详细内容,更多请关注钦钦技术栈其它相关文章!

转载至:php中文网【www.php.cn】

版权声明:本文(即:原文链接:https://www.qin1qin.com/catagory/24833/)内容由互联网用户自发投稿贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 630367839@qq.com 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年9月22日 上午11:54
下一篇 2022年9月22日 上午11:55
软件定制开发公司

相关阅读

发表回复

登录后才能评论
通知:禁止投稿所有关于虚拟货币,币圈类相关文章,发现立即永久封锁账户ID!