0

设想

  • 我有ProviderPackage
  • 提供者可以有许多特色包。
  • 所以我们需要一个 HABTMProviderPackage
  • Provider::edit()我想使用该方法一次性保存所有提供者的特色包

设置
我有三个模型。
Provider FeaturedPackage Package

楷模

这些是使用“ HABTM Through ”设置的,不应与 HABTM 混淆。所以关系如下。

ProviderhasManyFeaturedPackage
FeaturedPackage属于To Provider
PackagehasManyFeaturedPackage
FeaturedPackage属于ToPackage

控制器

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][

4

1 回答 1

0

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

这将通过并更新从表单提交的数组以匹配保存的预期。

我写了我的解决方案,http://jedisirfry.co.uk/blog/2013-08/how-to-create-hasmanythrough-multi-selects/

于 2013-08-01T09:10:37.093 回答