【问题标题】:Cakephp different model and controller with same tableCakephp 不同的模型和控制器与同一个表
【发布时间】:2012-09-25 09:46:09
【问题描述】:

可能是一个愚蠢的问题。

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

业务控制器

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
            }
        }
    }
}

计费模式

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',
            ),
                    )
        );

}

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

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

【问题讨论】:

    标签: php cakephp


    【解决方案1】:

    在这种情况下,据我了解,您在两个模型中都复制了一些代码(验证、关系等)。我认为更好的解决方案是使用 Billing 扩展用户模型

    class Billing extends Users {
    
    }
    

    控制器也是如此:

    class BillingsController extends UsersController 
    {
    
    }
    

    【讨论】:

    • 很棒的提示... cakephp 如何将数据正确插入用户表?是因为 useTable 变量吗?我的所有表单字段都像 data[Billing][name]..
    • 是的,useTable 变量告诉 cake wchich 表应该用于模型,前缀 'Billing' 在应用层中,并且在 cake 保存数据之前被翻译/映射到定义的表
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多