Cakephp不同的型号和控制器与同一个表

时间:2012-09-25 09:46:09

标签: php cakephp

可能是一个愚蠢的问题。

由于我的控制器和模型太大(我也不想搞乱旧模块),我想创建一个新的控制器和模型,我想将代码与现有代码分开。也就是说,我想要将一些代码从用户控制器和用户模型移动到计费控制器和计费模型(没有账单表,所有信息都存储在用户表中,所以我给了useTable ='users')。我不想执行用户模型中编写的任何代码,在执行billings控制器时,只需要执行BillingModel代码。

BusinessController

class BillingsController extends AppController 
{

    function add()
    {
        if (!empty($this->request->data)) 
        {
            $this->Billing->create();
            if ($this->Billing->save($this->request->data)) 
            {
                echo 'Saved'; // Message, redirect etc
            }
        }
    }
}

BillingModel

class Billing extends AppModel {


    public $useTable = 'users';

        public $hasOne = array('Profile');

public $validate = array(
        'email' => array(
            'email' => array(
                'rule' => 'email',
                'message' => 'Please provide a valid email address.',
                'last' => true,
            ),
                 'first_name' => array(
            'notempty' => array(
                'rule' => array('notempty'),
                'message' => 'Please enter your name',
            ),
                    )
        );

}

所有表单字段都将数据[商家]作为前缀。

数据正确保存到数据库中。我只是想知道,这种方法有什么问题吗?

1 个答案:

答案 0 :(得分:3)

在这种情况下,正如我所理解的那样,你在两个模型中复制了一些代码(验证,关系等)。在我看来,更好的解决方案是使用Billing来扩展用户模型

class Billing extends Users {

}

控制器也是如此:

class BillingsController extends UsersController 
{

}