我有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/