繁体   English   中英

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

[英]Cakephp different model and controller with same table

可能是一个愚蠢的问题。

由于我的控制器和模型太大(我也不想搞砸旧模块),我想创建一个新的控制器和模型,我想将代码与现有代码分开。也就是说,我想移动从用户控制器和用户模型到计费控制器和计费模型的一些代码(没有账单表,所有信息都存储在用户表中,所以我给出了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',
            ),
                    )
        );

}

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

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

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

class Billing extends Users {

}

与控制器相同的情况:

class BillingsController extends UsersController 
{

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM