phinx数据库查询-Phinx教程(3)

phinx数据库查询-Phinx教程(3)

技术应用 2年前 (2015-08-28) 浏览: 921 评论: 3

执行查询 Phinx进行数据库查询可以执行 execute()和 query()方法。 execute()方法返回的是执行数据库查询时数据库受影响的行数,而 query()方法返回的结果是一个数组。   注意:这些命令运行基于使用PHP数据对象(PDO) 扩展,它定义了一个轻量级的、一致的接口在PHP中访问数据库。总是确保你的查询与之前使用pdo同在 execute()命令。这是特别重要的在使用分隔符在插入的存储过程或触发器不支持分隔符。 获取行 phinx有两种方法可以获取行:fetchRow()方法将获取单个行,而 fetchAll()方法将返回多行。这两种方法都接受原生的SQL语句作为他们唯一的参数。   处理数据表 表对象 表对象是一个Phinx提供最有用的的api。它允许您使用PHP代码轻松操纵数据库表。您可以通过table()方法对表对象进行实例化,从而实现数据库迁移。 然后您可以使用表对象提供方法来操纵这个表: 创建表 使用表对象创建一个表十分简单,以下举例创建一个表来存储用户: 添加列:addColumn()方法; 添加索引:addIndex()方法:上面使用用户名和电子邮件来创建一个惟一索引列,最后调用save()将更改提交到数据库。 注意:Phinx自动为每个表创建一个名为“id”的自增列作为主键。 我们也可以使用表对象自行指定一个主键。一下代码会禁用Phinx自动生成 “id”的自增列作为主键,并使用其中 的两列创建一个主键:   若设置一个 primary_key但不使用自增属性 AUTO_INCREMENT,需要指定一个id来覆盖默认的 id字段名:   有效的列数据类型 列属性的数据类型指定为字符串,可以下列类型之一: biginteger binary boolean date datetime decimal float integer string text time timestamp uuid 此外,MySQL还支持 enum和 set列类型,Postgres支持 json和 jsonb列类型(PostgreSQL 9.3及以上)。 判断是否存在一个表: hasTable()   删除表 使用 dropTable()方法,同时你最好在 down()方法写上如何再重新创建此表(极客人注:便于后续向下迁移恢复)。   重命名表 重命名表通过访问表对象的一个实例,然后调用 rename()方法实现。   使用列 得到一个列列表:getColumns()方法 要检索所有表列,可以简单地创建一个表对象然后调用getColumns()方法,该方法将返回一个数组。例子如下:   检查是否存在一个列:hasColumn()方法 你可以使用 hasColumn()方法检查是否存在某一列。   重命名一个列:  renameColumn() 访问表对象的一个实例,然后调用 renameColumn()方法。   有顺序添加列 要想在一个列后跟着添加一个新列,使用 after选项来实现。   删除一个列: removeColumn()方法   设定列属性限制 可以使用 limit选项限制列的最大长度:   使用索引 添加一个索引表您可以简单地调用表对象的 addIndex()方法。   默认情况下Phinx会让数据库适配器创建一个正常的索引。我们也可以通过一个额外的参数 addIndex()方法来指定一个唯一的索引。   删除多个索引调用 removeIndex()方法,你必须为每个索引调用这个方法。   请注意: 当使用方法 removeIndex(),不需要再调用 save(),索引会在方法执行后立即删除。 操作外键 Phinx支持创建外键来约束你的数据库表。以下为添加外键的一个例子   “删除”和“更新”操作定义的“删除”和“更新”选项数组。可能性值“SET_NULL”,“NO_ACTION”、“级联”和“限制”。 我们也可以轻松地检查是否存在外键:   最后删除外键使用 dropForeignKey方法。  

【译】构建迁移-up,down,change方法-Phinx教程(2)

【译】构建迁移-up,down,change方法-Phinx教程(2)

技术应用 2年前 (2015-08-26) 浏览: 724 评论: 0

本文由极客人原创翻译自:http://phinx.readthedocs.org,不周之处,敬请指正;系列文章请访问王柏元的博客Phinx标签页或者用极客搜搜索:Phinx 获取所有文章目录 为转换数据库:对数据进行还原或修改,Phinx 是通过一系列的Migrations文件来实现的。每个Migrations文件其实是一个PHP类,构陷一个migration的方法最好是通过Phinx 提供的API,当然,运行原生的SQL语句也是可以的。 新建Phinx Migration 创建一个新的Phinx Migration迁移。我们要在项目文件夹下运行Phinx的 create命令:运行上述命令完毕后,在migrations文件夹(这个文件夹就是你安装phinx时的那个migrations文件夹) 会生成一个文件名为YYYYMMDDHHMMSS_my_new_migration.php的PHP文件,在前14个字符其实当前时间的时间戳。Phinx自动创建一个框架迁移文件有两个空的和一个被注释掉的方法: AbstractMigration类 所有Phinx Migration迁移类都继承于 AbstractMigration类,它提供了必要的支持来创建数据库迁移。数据库迁移可以创建新表,插入行,添加索引和修改列。 up()方法 当你对数据库进行向上迁移(即对数据库进行新的修改时),并且phinx检测到构建的migrations 之前没有被运行时,up()方法会被phinx自动运行。在up()方法中你需要根据你的意图自己写代码来修改数据库。  Down()方法 当你对数据库进行向下迁移(即对数据库的操作进行还原修改),phinx检测到构建的migrations 之前没有被运行时,Down()的方法会被Phinx自动运行。你应该使用down()方法来扭转/撤销数据库的修改。 Change()的方法 Phinx 0.2.0引入了一个新功能,叫做可逆迁移。你只需要定义可逆迁移的 up()方法的逻辑那么Phinx就可以为你自动找出如何向下迁移。定义一个可逆迁移必须取消 change方法的注释、补全里面的方法定义。例如:当执行这个迁移时,Phinx将创建 user_logins表,同时自动实现如何删除表。需要注意的是,当迁移文件中存在change方法时,Phinx会自动忽略了 up()和 down()方法。如果您还需要使用这些方法,建议您创建一个单独的migration文件。 注意: 在创建或更新表内 change()方法必须使用桌子上 create()和 update()方法。Phinx不能自动确定 save()调用创建一个新表或修改一个现有的一个。Phinx的可逆迁移只能反向实现以下的操作: 新建表 重命名表 添加列属性 重命名列属性 添加索引 添加外键 如果一个操作不能逆转,在向下迁移的时候,Phinx就会抛出 IrreversibleMigrationException异常。

【译】Phinx的介绍与安装-Phinx教程(1)

【译】Phinx的介绍与安装-Phinx教程(1)

技术应用 2年前 (2015-08-24) 浏览: 344 评论: 0

本文由极客人原创翻译自:http://phinx.readthedocs.org,不周之处,敬请指正;系列文章请访问王柏元的博客Phinx标签页或者用极客搜搜索:Phinx 获取所有文章目录   介绍 一个训练有素的开发者,善于使用SCM系统(Software configuration management :软件配置管理)对其程序代码进行版本控制;那么,为什么他们不使用相同的方式对数据库进行版本控制呢? Phinx允许开发者一种清晰、简洁的方式来修改和操作数据库,依托Phinx提供了一个强大的API,你无需手工编写SQL,而是使用PHP代码来创建代码迁移。然后开发者可以使用他们喜欢的SCM来进行代码迁移。这使得Phinx代码迁移可以移植于不同数据库系统之间。Phinx会对已经进行过的代码迁移进行跟踪,这样你就可以少担心数据库的状态,而是专注于开发更好的软件。 目标 开发Phinx的目的如下: 在常用数据库厂商之间轻松移植。 与PHP开发框架独立。 安装过程简单。 有一套易于使用的命令行操作。 与其他PHP工具(Phing、PHPUnit))和web框架集成使用。 安装 Phinx需要使用Composer进行安装,Composer 是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。详情可参考Composer官网 注意: Phinx最低支持PHP5.3.2版本。 安装Phinx,仅仅需要使用composer工具即可:执行下面命令进行安装(运行PHP命令需要自行配置好PHP环境变量,在环境变量path中加入PHP安装根目录): 然后运行composer: 在您的项目中创建一个有可写权限的文件夹 migrations来存放迁移文件,然后在您的项目文件夹下执行命令:

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

切换登录

注册