php - CakePHP - 执行 hasMany 的正确方法

标签 php cakephp model

我有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'
    );
}

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

所以 UserCategoryMeta 表看起来像这样:

id  |  user_id  | category_id  |  search_terms

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

在我的用户 Controller 中:

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

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

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

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

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

这会产生我想要的结果,但很明显,因为我只是在提交表单时创建随机输入,所以它会变成黑洞。我已经设法通过了这个,但我知道我做错了,希望有人能帮助我以正确的方式做到这一点。

此外,一旦我在 Controller 中有了这个数据数组,我就不确定如何将它正确地保存到数据库中。

在此先感谢您的帮助!

最佳答案

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

关于php - CakePHP - 执行 hasMany 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18069691/

相关文章:

php - PHP解析/语法错误;以及如何解决它们

php - CakePHP 2 find 方法与 JOIN 的问题

asp.net - MVC 4 - 在局部 View 中使用不同的模型

php - 如何使用 php artisan 删除模型?

ruby-on-rails - 在 Rails 应用程序中启用 2 个不同的模型与同一个表对话

php mysql 注册表

php - 第一个表单提交插入行随后提交更新同一行

CakePHP 路由 URL 未找到!

mysql - 使用 CakePHP 的 UTF-8 输出

php - 我如何允许使用 CakePHP 访问我的 .well-known/目录?