gpt4 book ai didi

cakephp 有很多表单数据

转载 作者:行者123 更新时间:2023-12-02 18:13:18 25 4
gpt4 key购买 nike

我想为一个产品保存多个类别。

我有模型:

Category.php
public $hasAndBelongsToMany = array(
'Product' => array(
'className' => 'Product',
'joinTable' => 'product_categories',
'foreignKey' => 'category_id',
'associationForeignKey' => 'product_id',
'unique' => 'keepExisting',
)
);

Product.php
public $hasMany = array(
'ProductCategory' => array(
'className' => 'ProductCategory',
'foreignKey' => 'product_id',
'dependent' => false,

),

ProductCategory.php
public $belongsTo = array(
'Product' => array(
'className' => 'Product',
'foreignKey' => 'product_id',

),
'Category' => array(
'className' => 'Category',
'foreignKey' => 'category_id',
)
);

因此,在产品/添加 View 中,我添加了一组类别复选框:

echo $this->Form->input('ProductCategory.category_id',array(
'label' => __('Category',true),
'type' => 'select',
'multiple' => 'checkbox',
'options' => $categories
));

但这会生成一组名称为:name="data[ProductCategory][category_id][]" 的输入,而不是 name="data[ProductCategory][0] [category_id]" 零正在递增。

如果它们的格式是模型和字段之间有键,那么我可以使用 saveAll() 吗?因为它是我得到的格式,所以我必须操作 request->data 将其转换为我希望能够 save() 的表单

我的处理方式正确吗?或者我的模型设置不正确?

另外,编辑 hasMany 数据会发生什么?例如,如果我取消选中一个选项并添加另一个选项怎么办? cake 是否会在添加新记录之前自动删除所有关联记录?

编辑。

本质上,我要问的是是否有更好或更快的方法来做到这一点,目前有效:

if ($this->Product->save($this->request->data)) {
$this->Product->ProductCategory->deleteAll(array('ProductCategory.product_id' => $this->Product->id));
foreach ($this->request->data['ProductCategory']['category_id'] as $cat_id) {
$this->Product->ProductCategory->create();
$this->Product->ProductCategory->set(array(
'product_id' => $this->Product->id,
'category_id' => $cat_id
));
$this->Product->ProductCategory->save();
}
}

最佳答案

在您的表单中迭代您希望显示的数量

for/while/do()
{
$counter++
$this->Form->text('Product.'.$counter.'.price');
$this->Form->text('Product.'.$counter.'.description');

}

关于cakephp 有很多表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13396049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com