3年前 (2015-08-28)  技术应用 |   3 条评论  1966 
文章评分 2 次,平均分 3.0

执行查询

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方法。

 

 

本文已在版权印备案,受著作权法律保护,未经允许不得转载!如需转载请联系作者或访问版权印获取授权,如果你觉得这篇文章对你有用,可以点击下面的“赞助作者”打赏作者!

转载注明原文出处:王柏元的博客>>https://wangbaiyuan.cn/3-phinx-database-query-phinx-tutorial.html

关于
记录生活,镌刻心路;泼洒文墨,分享技术!王柏元的博客致力于IT经验交流,并原创翻译引进外文文章,打开IT国际化视野

发表评论

格式
  1. 学习的永远在路上。

    孤军奋战 评论达人 LV.1 3年前 (2015-09-12) [0] [0]
  2. 这个是什么技术哟

    知道91博客 评论达人 LV.2 3年前 (2015-09-09) [0] [0]
  3. [思考]

    雪鹰领主 评论达人 LV.1 3年前 (2015-09-08) [0] [0]

登录

忘记密码 ?

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

切换登录

注册