嗨,我是 cakephp 新手,在 cakephp 2.3.4 上做一个项目。
我必须通过关联来关联产品金属类。但这似乎不起作用。
型号代码
class Metal extends AppModel {
public $hasMany = array(
'MetalProduct'
);
}
class Product extends AppModel {
public $hasMany = array(
'MetalProduct'
);
}
App::uses('AppModel', 'Model');
class MetalProduct extends AppModel {
public $belongsTo = array(
'Metal' => array(
'className' => 'Metal',
'foreignKey' => 'metal_id'
),
'Product' => array(
'className' => 'Product',
'foreignKey' => 'product_id'
)
);}
我的数据库表名是metal、products和metal_products
我有多个选择选项来选择一种以上的金属类型。
这就是我获得金属清单的方式
$metals=$this->Metal->find('list');
$this->set(compact('metals'));
列表框的 FormHelper 代码是
<?php echo $this->Form->input('Metal',array('type' => 'select',
'multiple' => true)); ?>
产品已成功保存,但关联未成功。
调试数组给了我这个
$message = array(
'Product' => array(
'category_id' => '517a514b-0eb0-4ec9-b018-0b948620d4f0',
'name' => 'mangalsutra Diamond',
'slug' => 'mangalsutra_diamond',
'description' => '1212',
'Metal' => array(
(int) 0 => '5183cb65-bf90-459c-b22e-0b748620d4f0',
(int) 1 => '5183ce25-c744-433e-b035-0b748620d4f0'
),
'image' => '121212',
'price' => '12121',
'weight' => '12',
'active' => '1',
'category' => 'Mangalsutra'
)
)
我已经把头穿过墙壁,但不知道为什么这些关联没有得到保存。他们在教程中所说的方式似乎很容易,但为什么它不起作用?
我怀疑它没有保存,因为金属阵列是这样传递的
'Metal' => array(
(int) 0 => '5183cb65-bf90-459c-b22e-0b748620d4f0',
(int) 1 => '5183ce25-c744-433e-b035-0b748620d4f0'
),
它应该提到'id''而不是(int)0或其他东西。
此外,我手动创建的 metal_products 数据库表有
id(primary key)
metal_id(foreign key to Metal.id)
product_id(foreign key to Product.id)
我在命名约定或创建数据库的方式上做错了吗?请给我正确的答案,因为我从其他人那里尝试的任何答案都不起作用
我通过保存它
$this->Product->saveAll($this->request->data, array('deep' => true))