【发布时间】:2023-04-07 20:18:01
【问题描述】:
我的外键字段有问题:我用MySQLWorkbench 创建了一个categories 表,它通过1:n 关系链接到另一个表:Articles。它似乎有效,因为在Articles 中,有一个categories_id "INT" 字段。
我烘焙了整个项目,一切正常,除了这个外键:我写的不是接收“数字”的输入来指定categories_id数字,而是一种空的“选择”( list) 不包含任何内容,因此我无法在我的数据库中为 categories_id 字段输入任何数字:
这是图片:
如果我尝试“强制”并添加“文章”(因此没有类别),则会出现此错误:
错误:SQLSTATE[23000]:完整性约束违规:1452 无法添加或更新子行:外键约束失败(
ecommerce.articles,CONSTRAINTfk_articles_categoriesFOREIGN KEY (categories_id) REFERENCES @ 987654334@ (id) ON DELETE NO ACTION ON UPDATE NO ACTION)
这是我的 add.ctp 文件(它写成 input 用于 categories_id,所以我不知道要更改什么):
<div class="articles form">
<?php echo $this->Form->create('Article');?>
<fieldset>
<legend><?php echo __('Add Article'); ?></legend>
<?php
echo $this->Form->input('nom');
echo $this->Form->input('prix');
echo $this->Form->input('categories_id');
?>
感谢您的帮助
编辑:
这是我添加的内容:
class Article extends AppModel {
var $belongsTo = array(
'Category' => array(
'className' => 'Category',
'foreignKey' => 'category_id'
)
);
}
和:
class Category extends AppModel {
var $hasMany = array(
'Article' => array(
'className' => 'Article',
'foreignKey' => 'category_id'
)
);
}
在控制器中(add()):
public function add() {
//$this->set('categories',$this->Article->Category->find('all'));
//$c = $this->Article->Category->find('all', array("recursive"=>-1, 'fields'=>array('id', 'nom')));
$c = $this->Article->Category->find('list');
$this->set('cat', $c);
但在我看来,pr($cat) 返回一个空数组...
<?php
echo $this->Form->input('nom');
echo $this->Form->input('prix');
echo $this->Form->input('category_id', array('option'=>$cat));
pr($cat);
?>
【问题讨论】:
标签: cakephp foreign-keys foreign-key-relationship