phalcon数据库配置添加表前缀过程详解

Phalcon默认居然不能设置数据表前缀,常用的框架都支持。

修改方法一:

新建一个基础模型,然后所有的模型在该类上继承即可

 代码如下 复制代码

<?php
class BaseModel extends \Phalcon\Mvc\Model {
    public function getSource()
    {
        return 'gw_'.strtolower(get_class($this));
    }
}

但是此种方法,用phalcon devtools命令行模式生成model文件,文件名称是有表前缀的

修改方法二:

2.1 先在app/config/config.php 配置文件加上数据库前缀配置tablePrefix

 代码如下 复制代码

'database' => array(
        'adapter'     => 'Mysql',
        'host'        => 'localhost',
        'username'    => 'root',
        'password'    => '',
        'dbname'      => 'test',
        'charset'     => 'utf8',
        'port' => '3306',
        'tablePrefix' => 'gw_'
    ),

2.2 修改phalcon devtools

代码phalcon\devtools\scripts\Phalcon\Builder\Model.php
在220行$table = $this->options->get(‘name’);之后加上代码

 代码如下 复制代码

$table = $this->options->get('name');
if(isset($config->database->tablePrefix)){
    $table = $config->database->tablePrefix.$table;
}

在480行

 代码如下 复制代码

$methodRawCode[] = $this->snippet->getModelSource($this->options->get(‘name’));
修改代码为:

$methodRawCode[] = $this->snippet->getModelSource($table);

此时使用工具命令

phalcon model user

生成model :

app/models/User.php

内容如下,不会提示table不存在了:

PHP

 代码如下 复制代码

<?php
 
use Phalcon\Mvc\Model\Validator\Email as Email;
 
class User extends \Phalcon\Mvc\Model
{
 
    /**
     *
     * @var integer
     */
    public $id;
 
    /**
     *
     * @var string
     */
    public $username;
 
    /**
     *
     * @var string
     */
    public $password;
 
    /**
     *
     * @var integer
     */
    public $status;
 
    /**
     *
     * @var string
     */
    public $real_name;
 
    /**
     *
     * @var string
     */
    public $mobile;
 
    /**
     *
     * @var string
     */
    public $email;
 
    /**
     *
     * @var integer
     */
    public $sex;
 
    /**
     *
     * @var integer
     */
    public $logins;
 
    /**
     *
     * @var integer
     */
    public $create_time;
 
    /**
     * Validations and business logic
     *
     * @return boolean
     */
    public function validation()
    {
        $this->validate(
            new Email(
                array(
                    'field'    => 'email',
                    'required' => true,
                )
            )
        );
 
        if ($this->validationHasFailed() == true) {
            return false;
        }
 
        return true;
    }
 
    /**
     * Initialize method for model.
     */
    public function initialize()
    {
        $this->setSource("gw_user");
    }
 
    /**
     * Returns table name mapped in the model.
     *
     * @return string
     */
    public function getSource()
    {
        return 'gw_user';
    }
 
    /**
     * Allows to query a set of records that match the specified conditions
     *
     * @param mixed $parameters
     * @return User[]
     */
    public static function find($parameters = null)
    {
        return parent::find($parameters);
    }
 
    /**
     * Allows to query the first record that match the specified conditions
     *
     * @param mixed $parameters
     * @return User
     */
    public static function findFirst($parameters = null)
    {
        return parent::findFirst($parameters);
    }
 
}

时间: 2024-11-02 16:25:13

phalcon数据库配置添加表前缀过程详解的相关文章

IIS8 使用FastCGI配置PHP环境支持 过程详解

原文:IIS8 使用FastCGI配置PHP环境支持 过程详解   平时帮朋友们配置过一些PHP环境的服务器,但是一直使用的都是Apache HTTP+PHP,今天呢,我吧IIS+PHP配置方式给大家发一下下~呵呵.   在这里,我使用的是FastCGI模块映射的方式配置的,当然还有ISAPI处理程序映射,不过ISAPI的方式在PHP5.5之后就没有了,FastCGI是推荐的方式,效率相对比较高也稳定. 系统我用的是自己的笔记本,Windows 8.1,IIS是8的,当然Windows Serv

Linux系统下配置squid代理服务器的过程详解

  简单记录一下Squid透明代理服务器的配置 环境:VirtualBox + CentOS 6.0 + squid-3.1.4-1.el6.i686 0.检查squid是否默认安装,没有安装的先安装 代码如下: [root@Slyar ~]# rpm -qa squid squid-3.1.4-1.el6.i686 1.虚拟机添加双网卡,全部设置桥接,配置IP,eth0作为外网,eth1作为内网,注意配置文件里的网卡MAC地址要和设备匹配! 代码如下: [root@Slyar ~]# vim

WordPress数据库表及字段详解

今天熊哥在朋友的博客看到关于wordpress数据库的介绍,感觉很有用,相信对同样在使用wordpress的同学也很有用,所以就拿过来分享一下.希望对自己和大家有所帮助. [废话] 记得刚接触网站时对数据库一点概念也没有,那时公司网站要换服务器,于是就单纯的转移了网站文件,结果可想而知.一翻折腾,在糊里糊涂中按网上的教程终于搞定,享受成就感时也第一次接触了数据库.那时感觉数据库高端深奥遥远,从没想过自己以后会跟数据库再有交集:而后,自己成为一名数据库工程师时也没想起当年数据库曾给自己带来困扰.现

DBA_Oracle Startup / Shutdown启动和关闭过程详解(概念)(对数据库进行各种维护操作)_oracle

一.摘要 Oracle数据库的完整启动过程是分步骤完成的,包含以下3个步骤: 启动实例-->加载数据库-->打开数据库 因为Oracle数据库启动过程中不同的阶段可以对数据库进行不同的维护操作,对应我们不同的需求,所以就需不同的模式启动数据库. 1. Oracle启动需要经历四个状态:SHUTDOWN .NOMOUNT .MOUNT .OPEN 2. Oracle关闭的四种方式:Normal, Immediate, Transactional, Abort 3. 启动和关闭过程详解   二.数

yum安装CDH5.5 hive、impala的过程详解_Linux

一.安装hive 组件安排如下: 172.16.57.75 bd-ops-test-75 mysql-server 172.16.57.77 bd-ops-test-77 Hiveserver2 HiveMetaStore 1.安装hive 在77上安装hive: # yum install hive hive-metastore hive-server2 hive-jdbc hive-hbase -y 在其他节点上可以安装客户端: # yum install hive hive-server2

Win 2000系统引导过程详解(2)

过程|详解 表一则列出了在系统引导的不同阶段所引用的文件. 表一 在这里,我们暂不讨论Windows 2000操作系统的内部工作机制,以下通过图文结合的方式,简要给大家说明在这五个阶段,操作系统都在干些什么,那些程序发挥了作用. 第一步,预引导阶段,过程如图二所示,首先包括了系统加电自检,这个过程完成硬件设备的枚举和配置.其次计算机BIOS确定引导设备的位置,加载并运行Master Boot Record(MBR)主引导区内容(如lilo等).然后扫描分区表,定位活动分区,并将活动分区上的引导扇

Android 定时任务过程详解_Android

在Android开发中,通过以下三种方法定时执行任务: 一.采用Handler与线程的sleep(long)方法(不建议使用,java的实现方式) 二.采用Handler的postDelayed(Runnable, long)方法(最简单的android实现) 三.采用Handler与timer及TimerTask结合的方法(比较多的任务时建议使用) android里有时需要定时循环执行某段代码,或者需要在某个时间点执行某段代码,这个需求大家第一时间会想到Timer对象,没错,不过我们还有更好的

SQL语句执行过程详解

SQL语句执行过程详解一条sql,plsql的执行到底是怎样执行的呢?一.SQL语句执行原理:第一步:客户端把语句发给服务器端执行当我们在客户端执行 select 语句时,客户端会把这条 SQL 语句发送给服务器端,让服务器端的进程来处理这语句.也就是说,Oracle 客户端是不会做任何的操作,他的主要任务就是把客户端产生的一些 SQL 语句发送给服务器端.虽然在客户端也有一个数据库进程,但是,这个进程的作用跟服务器上的进程作用事不相同的.服务器上的数据库进程才会对SQL 语句进行相关的处理.不

Android 定时任务过程详解

在Android开发中,通过以下三种方法定时执行任务: 一.采用Handler与线程的sleep(long)方法(不建议使用,java的实现方式) 二.采用Handler的postDelayed(Runnable, long)方法(最简单的android实现) 三.采用Handler与timer及TimerTask结合的方法(比较多的任务时建议使用) android里有时需要定时循环执行某段代码,或者需要在某个时间点执行某段代码,这个需求大家第一时间会想到Timer对象,没错,不过我们还有更好的