我正在使用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。
请帮忙。
答案 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,并保持其他相同的内容对您有用。
快乐编码:)