cakephp多重选择不工作
我有两个表“business”和cakephp多重选择不工作,cakephp,cakephp-3.2,validates-associated,Cakephp,Cakephp 3.2,Validates Associated,我有两个表“business”和business\u categories,它们的关联如下 BusinessesTable.php $this->hasMany('SellerBusinessCategories', [ foreignKey => 'business_id' ]); public function add() { $sellerBusiness = $this->SellerBusinesses->newEntity(); if
business\u categories
,它们的关联如下
BusinessesTable.php
$this->hasMany('SellerBusinessCategories', [
foreignKey => 'business_id'
]);
public function add()
{
$sellerBusiness = $this->SellerBusinesses->newEntity();
if ($this->request->is('post')) {
$sellerBusiness->seller_id = $this->Auth->user('id');
$sellerBusiness = $this->SellerBusinesses->patchEntity($sellerBusiness, $this->request->data, [
'associated' => [
'SellerBusinessCategories'
]
]);
if ($this->SellerBusinesses->save($sellerBusiness)) {
$this->Flash->success(__('The seller business has been saved.'));
return $this->redirect(['action' => 'index']);
} else {
$this->Flash->error(__('The seller business could not be saved. Please, try again.'));
}
}
$categories = $this->SellerBusinesses->SellerBusinessCategories->Categories->find('list', ['limit' => 200]);
$sellers = $this->SellerBusinesses->Sellers->find('list', ['limit' => 200]);
$this->set(compact('sellerBusiness', 'sellers', 'categories'));
$this->set('_serialize', ['sellerBusiness']);
}
我必须在业务
表中输入多个类别以及业务
这就是输入字段在add.ctp
视图中的显示方式
<?= $this->Form->input('seller_business_categories._category_ids', [
'options' => $categories,
'multiple' => true,
'type' => 'select',
'class' => 'form-control select2',
'label' => false
])
?>
而且表格没有提交。删除multiple=>true
并将business\u类别替换为business.category\u id
工作正常
少了什么吗
编辑2
sellerbusinesscontroller.php
$this->hasMany('SellerBusinessCategories', [
foreignKey => 'business_id'
]);
public function add()
{
$sellerBusiness = $this->SellerBusinesses->newEntity();
if ($this->request->is('post')) {
$sellerBusiness->seller_id = $this->Auth->user('id');
$sellerBusiness = $this->SellerBusinesses->patchEntity($sellerBusiness, $this->request->data, [
'associated' => [
'SellerBusinessCategories'
]
]);
if ($this->SellerBusinesses->save($sellerBusiness)) {
$this->Flash->success(__('The seller business has been saved.'));
return $this->redirect(['action' => 'index']);
} else {
$this->Flash->error(__('The seller business could not be saved. Please, try again.'));
}
}
$categories = $this->SellerBusinesses->SellerBusinessCategories->Categories->find('list', ['limit' => 200]);
$sellers = $this->SellerBusinesses->Sellers->find('list', ['limit' => 200]);
$this->set(compact('sellerBusiness', 'sellers', 'categories'));
$this->set('_serialize', ['sellerBusiness']);
}
关于调试:调试($this->request->data),给出
],我认为您获取列表的查询不够清晰
<select>
<option value="$AAA">$BBB</option>
</select>
希望能有帮助
编辑#2
遵循我的代码。当我调试时,它将显示如下(有越南城市)
这是我的数据库。
这是我的查询后调试
[
(int) 0 => 'Select city',
(int) 1 => 'Thành phố Hà Nội',
(int) 2 => 'Tỉnh Hà Giang',
(int) 3 => 'Tỉnh Cao Bằng',
(int) 4 => 'Tỉnh Bắc Kạn',
(int) 5 => 'Tỉnh Tuyên Quang',
(int) 6 => 'Tỉnh Lào Cai',
(int) 7 => 'Tỉnh Điện Biên',
(int) 8 => 'Tỉnh Lai Châu',
(int) 9 => 'Tỉnh Sơn La',
(int) 10 => 'Tỉnh Yên Bái',
]
必须定义选择框才能知道id(值)和文本的位置。因为在您的表中可能会有许多列(字段)。我认为您获取列表的查询不够清晰
<select>
<option value="$AAA">$BBB</option>
</select>
希望能有帮助
编辑#2
遵循我的代码。当我调试时,它将显示如下(有越南城市)
这是我的数据库。
这是我的查询后调试
[
(int) 0 => 'Select city',
(int) 1 => 'Thành phố Hà Nội',
(int) 2 => 'Tỉnh Hà Giang',
(int) 3 => 'Tỉnh Cao Bằng',
(int) 4 => 'Tỉnh Bắc Kạn',
(int) 5 => 'Tỉnh Tuyên Quang',
(int) 6 => 'Tỉnh Lào Cai',
(int) 7 => 'Tỉnh Điện Biên',
(int) 8 => 'Tỉnh Lai Châu',
(int) 9 => 'Tỉnh Sơn La',
(int) 10 => 'Tỉnh Yên Bái',
]
必须定义选择框才能知道id(值)和文本的位置。因为您的表中可能有许多列(字段)。添加控制器代码在编辑2中添加控制器代码在编辑2中添加控制器代码请查看调试结果($this->request->data)。我不认为问题出在分类上,也许你误解了我提到的。因为您显示的错误是“1364字段‘category_id’在business_categories中没有默认值”,所以我认为我的想法是正确的。请查看我的编辑#2了解更多信息。请查看调试结果($this->request->data)。我不认为问题出在分类上,也许你误解了我提到的。因为您显示的错误是“1364字段‘category_id’在business_categories中没有默认值”,所以我认为我的想法是正确的。请查看我的编辑2以了解更多信息。