使用hasMany和Multi-select

时间:2013-07-17 14:07:48

标签: cakephp cakephp-2.0

情景

  • 我有ProviderPackage
  • 提供商可以拥有多个精选套餐。
  • 因此,我们需要ProviderPackage
  • 之间的HABTM
  • 我想使用Provider::edit()方法
  • 一次性保存所有提供商特色包

设置
我有三种型号 Provider FeaturedPackage Package

模型

使用“HABTM Through”进行设置,不应与HABTM混淆。所以关系如下。

Provider hasMany FeaturedPackage
FeaturedPackage属于Provider Package有许多FeaturedPackage
FeaturedPackage属于Package

控制器

public function admin_edit($id) {
    if ($this->request->is('post') || $this->request->is('put')) {
        if ($this->Provider->saveAll($this->request->data)) {
// snip

查看

echo $this->Form->input('FeaturedPackages', array('type' => 'select', 'multiple' => true, 'options' => $packages));

问题
我不确定如何从关系的一侧保存多个可变数量的hasMany记录。通过阅读本书,我知道预期的数据数组应该在模型下面进行数字索引。

但是,我不确定如何命名我的字段以正确格式化数据。

我无法烘焙视图,因为它似乎忽略了hasMany,甚至没有添加字段。

我尝试过的字段名称
FeaturedPackage
FeaturedPackage.FeaturedPackage
FeaturedPackage.package_id
FeaturedPackage..package_id
FeaturedPackage。[]。的package_id
FeaturedPackage.package_id] [

1 个答案:

答案 0 :(得分:0)

我在我的模型中使用数据按摩方法解决了这个问题,该方法是从控制器调用的。

这将通过并更新从表单提交的数组,以匹配保存所期望的内容。

我在博客上写了http://jedistirfry.co.uk/blog/2013-08/how-to-create-hasmanythrough-multi-selects/