BFWSOA中使用model first来创建PHP应用,自动建表
大家在开发系统的时候,要先设计数据库,建表,然后再开发,这是一种开发模式,还有一种模式是在代码中定义数据结构,数据库会自动创建,当代码中定义的数据结构与数据库不一致时,底层会自动更新数据库,无法人为进行数据库变更,这在开发中是非常有用的,比如我们在新版系统中对数据库做了修改,新增了几个字段,传统的办法就是记录下sql的操作语句,下次上线的时候,对数据库执行一次sql,如果底层能根据代码层定义的数据结构进行比对,是不是就可以自动完成这些操作呢,bfwsoa实现了这项技术。
首先在Model层下新建一个Model叫做Article,增加一个$_fields,采用数组的形式来定义数据库表中的列
<?php namespace App\Blog\Model; use Lib\BoModel; use Lib\BoConfig; /** * * @author Herry * 文章数据模型 */ class Model_Article extends BoModel { protected $_prikey = "id"; protected $_isview = false; protected $_fields = [ [ 'name' => "id", "type" => 'int', "length" => 11, "default" => 0, "autoinc" => true, "prikey" => true ], [ 'name' => "title", "type" => 'varchar', "length" => 50, "comment" => '标题' ], [ 'name' => "cont", "type" => 'text', "comment" => '内容' ], [ 'name' => "addtime", "type" => 'datetime', "default" => "2020-12-12" ] ]; private static $_instance; function __construct() { $this->_connarray = BoConfig::Config("Db", "localconfig"); parent::__construct(); } /** * 获取单例 * * @return Model */ public static function getInstance() { if (! (self::$_instance instanceof self)) { self::$_instance = new self(); } return self::$_instance; } } ?>定义完后,在调用model层grup操作时,bfwsoa框架会自动对比数据库,没有就创建,有的话就看是否有变化,有变化就更新,是不是很方便。
此外,model层还可以进行字段方法调用
比如表中有username与password两个字段,我要找到同步匹配这两个的数据,传统的方法就是写sql 语句
select * from table where usename='bfw' and password='bfw'
使用bfwsoa框架只要几个字就获取结果了Model_Article::getInstance->FindByUsernameAndPassword('bfw','bfw');
是不是很简单框架直接封装好了这些方法,操作起来更方便
网友评论0