模型


COOLPHP基于Medoo在core\plugin\Model.php实现了初始化

/**
 * 模型父类
 * @author 2daye
 */

namespace core\plugin;

use Medoo\Medoo;

class Model
{
    /**
     * 数据库链接资源
     * @var bool|Medoo
     * @author 2daye
     */
    protected bool|Medoo $database = false;

    /**
     * 链接数据库
     * @throws \Exception
     * @author 2daye
     */
    public function __construct()
    {
        // 判断是否连接数据库
        if ($this->database === false) {
            // 获取数据库配置
            $dbConfig = Config::getAll('database');

            $this->database = new Medoo([
                'type' => 'mysql',
                'host' => $dbConfig['DB_HOST'],
                'database' => $dbConfig['DB_NAME'],
                'username' => $dbConfig['DB_USER'],
                'password' => $dbConfig['DB_PASSWORD'],
                'charset' => 'utf8mb4',
                'collation' => 'utf8mb4_unicode_ci',
                'port' => $dbConfig['DB_PORT_NUMBER'],
                // 表前缀
                'prefix' => '',
                // 启用日志记录,默认情况下禁用它以获得更好的性能。
                'logging' => true
            ]);
        }
    }
}


之后统一继承父模型类,你也可以封装自己需要的数据库操作,例如:User模型的注册业务逻辑或基础的增删改查操作

namespace core\app\common\model;

use core\plugin\Code;
use core\plugin\Model;
use core\plugin\RESTful;

class User extends Model
{
    // 表名
    protected string $table = 'user';

    /**
     * 注册
     * @param array $data
     * @return array
     * @author 2daye
     */
    public function register(array $data): array
    {
        $count = $this->database->count($this->table, ['phone' => $data['phone']]);

        // 如果用户存在就拒绝注册
        if ($count > 0) {
            return (new RESTful())->response(Code::FORBIDDEN, '手机号已经存在')->array();
        }

        $result = $this->database->insert($this->table, $data);

        // 判断用户是否新增成功
        if ($result->rowCount() > 0) {
            return (new RESTful())->response(Code::OK)->array();
        }

        return (new RESTful())->response(Code::INTERNAL_SERVER_ERROR)->array();
    }
}