我的网站/数据库已设置为允许用户管理帐户,因此当用户创建帐户时,用户将数据保存在accounts_users表中。一个人登录(使用来自users表的信息)并创建一个模板,问题是accounts_templates表没有从accounts_users表中提取accountid并且它抛出了数据库错误。
帐户hambt用户,
用户hambt帐户,
帐户hasmany模板,
模板属于帐户
有accounts_templates包含id,account_id,template_id
有accounts_users,其中包含id,account_id,user_id
有模板包含id,name,description,active
有帐户包含id,companyname,postcode,abn
有用户包含id,username,password
模板模型
<?php
class Template extends AppModel{
var $name='Template';
public $useTable = 'templates';
public $primaryKey = 'id';
public $belongsTo = array(
'Account' => array(
'classname' => 'Account',
'foreignKey' =>'account_id'
)
);
}
帐户模板
var $hasMany = array(
'Template' =>
array(
'className'=>'Template',
'foreignKey'=>'account_id',
)
);
从模板控制器添加功能
function add(){
if($this->request->is('post')){
$this->Template->create();
if ($this->Template->save($this->request->data))
{
$this->Session->setFlash('The template has been saved');
$this->redirect( array('controller' => 'Fields','action' => 'add'));
}
else { $this->Session->setFlash('The template could not be saved. Please, try again.'); }
}
}
答案 0 :(得分:0)
我看不到你的数据库,但从你的问题判断可能有几个错误:
user_accounts
在Cakephp中作为连接表的名称是错误的。它应该是:
accounts_users
复数,按字母顺序排列。
如果你创建一个 accounts_templates 连接表,表示帐户HABTM模板。你说这是一个HasMany。要么它是HasMany,那么不需要连接表,或者它是HABTM,你应该在模型中这样说。
编辑:好的。在你的问题中,你写道:
accounts_templates which contains id, accounts_id, templates_id
它应该是:
id, account_id, template_id
单数。
答案 1 :(得分:0)
实际上没有你所谓的account_template模型。一个帐户有一个模板,然后一个模板有很多帐户。
因此,对于此任务,您应该有两个模型: 帐户和模板
Account Model
var $hasOne = array(
'Template' =>
array(
'className'=>'Template',
)
);
Template Model
public $hasMany = array(
'Account' => array(
'classname' => 'Account',
'foreignKey' =>'Template_id'
)
);