cakebake在cakephp3中没有使用前缀

时间:2017-06-30 06:14:55

标签: caph-framework

我正在使用cakephp 3.4.9。当我使用带有前缀n字段的表时,它在烘焙后正常工作,但如果我在表字段中使用前缀则无效。

就像当我使用以下字段的帖子时 ID, 后, 日期

它工作正常但是如果我使用以下字段则无法正常工作 p_id的, p_post, p_date

它在模型中添加了额外的代码

$this->belongsTo('Ps', [
         'foreignKey' => 'p_id',
         'joinType' => 'INNER'
     ]);
public function buildRules(RulesChecker $rules)
 {
    $rules->add($rules->existsIn(['p_id'], 'Ps'));

     return $rules;
}

为什么ps在这里添加?如果我像articales一样使用它,那就变成了As。

请帮忙。

1 个答案:

答案 0 :(得分:0)

我想建议你,阅读这篇文章。 CakePHP naming convention documentation

在cakePHP框架中,创建表时必须记住的一切是CakePHP命名约定。在您的情况下,这是因为cakePHP期望任何表的主列只是' id ',并且表的外键将是带有下划线id的相关表名 (例如:如果产品表属于BelogsTO类别,则必须在product表中将列设为category_id)

在你的情况下,cakePHP将p_id视为表 P 的外键。默认情况下,cakePHP对forein键的验证是existsIn,这意味着在保存p_id时,它将检查P表中是否存在id。

一方面,这是因为命名惯例问题。您只能将p_id更改为id,并保持其他相同的内容对您有用。

快乐编码:)