我正在寻找将id添加到数据库表的最佳实践。作为一个例子,我有一个拥有许多食谱的会员(模特)。 Recipe模型声明它属于会员:
public $belongsTo = array(
'Member' => array(
'className' => 'Member',
'foreignKey' => 'member_id',
)
);
我希望在将新配方保存到数据库时这已经足够了,但我发现蛋糕无法自行找出关系,因为我收到错误(“常规错误:1364字段'member_id'不会使用add:
时有一个默认值“)public function add() {
if ($this->request->is('post')) {
$this->Recipe->create();
if ($this->Recipe->save($this->request->data)) {
$this->Session->setFlash(__('The recipe has been saved'));
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The recipe could not be saved. Please, try again.'));
}
}
}
现在,在这种情况下,我可以通过添加
轻松解决问题$this->request->data['Recipe']['member_id'] = $this->Auth->user('id');
但一般来说,我想要添加的ID不会与Auth数据一起存储。所以我想知道如何在保存属于其他东西的东西时访问id。
编辑:我认为我的问题可能措辞不够好。我将重申我正在寻找的东西:
Say User hasMany A,hasMany B,hasMany C. C belongsTo B,A和User(C表包含user_id,a_id和b_id)。用户登录并选择某个A,然后选择某个B.用户现在想要添加新的C.获取新C条目的所有id值的最佳方法是什么?我只是设置了一堆会话变量吗?它们都应该在URL中传递吗?还有更好的方法吗?
答案 0 :(得分:0)
您需要提供要保存在数据库中的任何信息。这意味着您可以使用您已经说明的Auth信息,也可以通过表格获取信息,您可以从中选择所有可用的成员。 无论哪种方式,信息都必须来自某个地方。它不能无中生有。
答案 1 :(得分:0)
如果用户正在选择或选择A,B或C,他们可以以某种方式存储他们的数据并处理它们。
通常,常用的方法是使用表单。如果您使用的是Javascript,则可以设置隐藏的输入,或者如果您使用的是AJAX,只需在其中使用它们即可调用最终的Cake函数。
您必须查看用户如何选择它们,然后将该ID存储在某个变量中以与其一起使用。 POST,GET,SESSIONS,COOKIES ......