定义模型


定义一个 User 模型类:

定义模型必须继承模型基类 ginkgo\Model

  1. namespace app\model\index;
  2. use ginkgo\Model;
  3. class User extends Model {
  4. }

模型基类 ginkgo\Model 内置了如下类的实例:

  1. class Model {
  2. // ginkgo\Request 的实例
  3. protected $obj_request;
  4. }

设置数据库连接

如果你想指定数据库连接,可以使用:

  1. namespace app\model\index;
  2. class User extends ginkgo\Model {
  3. protected $connection = array(
  4. // 数据库类型
  5. 'type' => 'mysql',
  6. // 服务器地址
  7. 'host' => '127.0.0.1',
  8. // 数据库名
  9. 'name' => 'baigo',
  10. // 数据库用户名
  11. 'user' => 'root',
  12. // 数据库密码
  13. 'pass' => '',
  14. // 数据库连接端口
  15. 'port' => '',
  16. // 数据库编码默认采用 utf8
  17. 'charset' => 'utf8',
  18. // 数据库表前缀
  19. 'prefix' => 'baigo_',
  20. // 数据库调试模式
  21. 'debug' => false,
  22. );
  23. }

和连接数据库的参数一样,connection 属性的值也可以设置为数据库的配置参数。


设置数据表

模型会自动对应数据表,模型类的命名规则是:除去前缀的数据表名称,采用驼峰法和下划线(首字母大写)。以下是一个例子:

假设前缀是 baigo_

模型名 约定对应数据表
User baigo_user
User_Type baigo_user_type

如果模型名与数据表无法对应,那就需要设置数据表名称属性。

注意:表名属性不包括前缀,系统会自动加上前缀,如果要阻止系统添加前缀,可以用 ` 符号包裹完整的表名。

  1. namespace app\model\index;
  2. class User extends ginkgo\Model {
  3. // 设置数据表名
  4. protected $table = 'user';
  5. }

模型调用

模型类支持两种调用方式,例如:

  1. // 使用 Loader 类实例化(单例)
  2. $user = Loader::model('User');
  3. // 实例化模型
  4. $user = new User;