【问题标题】:CakePHP - Correct way to do hasMany throughCakePHP - 做hasMany的正确方法
【发布时间】:2013-08-05 23:54:40
【问题描述】:

我有 3 个模型

分类:

 class Category extends AppModel {
     public $belongsTo = array(
        'Parent' => array(
            'className' => 'Category',
            'foreignKey' => 'parent_id'
        ),
     );
     public $hasMany = array(
         'Children' => array(
            'className' => 'Category',
            'foreignKey' => 'parent_id'
         ), 
        'UserCategoryMeta'
     );
}

用户:

class User extends AppModel {
    public $hasMany = array(
        'UserCategoryMeta' => array(
            'className' => 'UserCategoryMeta',
            'foreignKey' => 'user_id',
        ),
    );
}

用户类别元:

class UserCategoryMeta extends AppModel
{
    public $belongsTo = array(
        'User', 'Category'
    );
}

我需要做的是让每个用户能够选择许多类别,并且对于每个关联,我需要用户设置搜索词,这只是数据库中的 1 个字段。

所以 UserCategoryMeta 表如下所示:

id  |  user_id  | category_id  |  search_terms

我找到了一种可行的方法,但它看起来很老套。

在用户控制器中我有:

$Categories = $this->User->Category->find('list');

然后在添加视图中我有复选框:

echo $this->Form->input('Category.Category',array(
    'type' => 'select', 
    'multiple' =>'checkbox',
    'options' => $Categories,
));

然后,我可以让每个复选框在它们旁边输入搜索词的唯一方法是在添加视图中执行此操作:

foreach ($Categories as $key => $category){
    echo '<input type="text" id="Category'.$key.'SearchTerms" name="data[Category][search_terms]['.$key.']"><br/>';
}

这会产生我想要的东西,但显然因为我只是在表单提交时创建随机输入,所以它是黑洞。我设法通过了这个,但我知道我做错了,希望有人能帮助我做对。

然后,一旦我在控制器中有这个数据数组,我不知道如何正确地将它保存到数据库中。

提前感谢您的帮助!

【问题讨论】:

    标签: php cakephp model


    【解决方案1】:

    做你正在做的事,但在重复中,使用 $this->Form->input 而不是手动编写 HTML。

    【讨论】:

    • 是的,这就是我最终所做的。所以我接受了这个答案。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    相关资源
    最近更新 更多