0

我正在寻找将 id 添加到数据库表的最佳实践。作为一个例子,我有一个有许多食谱的成员(模型)。Recipe 模型声明它属于成员:

public $belongsTo = array(
    'Member' => array(
        'className' => 'Member',
        'foreignKey' => 'member_id',
    )
);

我希望这在将新食谱保存到数据库时就足够了,但我发现 cake 无法自行确定关系,因为我收到错误消息(“一般错误:1364 字段'member_id'没有默认值值”)使用添加时:

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。

编辑:我认为我的问题可能措辞不够好。我将重申我正在寻找的内容:

假设用户有很多 A,其中有很多 B,其中有很多 C。C 属于 B、A 和用户(C 的表包含 user_id、a_id 和 b_id)。用户登录,然后选择某个 A,然后选择某个 B。用户现在想要添加一个新 C。获取新 C 条目的所有 id 值的最佳方法是什么?我只是设置了一堆会话变量吗?它们都应该在 URL 中传递吗?有没有更好的办法?

4

2 回答 2

0

您需要提供要保存在数据库中的任何信息。这意味着您要么使用已经声明的身份验证信息,要么通过可以从所有可用成员中进行选择的表单获取信息。无论哪种方式,信息都必须来自某个地方。它不能无中生有地创造自己。

于 2012-11-18T17:49:35.217 回答
0

如果用户正在选择或选择 A、B 或 C,那么您可以通过某种方式存储他们的数据并进行处理。

通常,常用的方法是使用表单。如果您使用 Javascript,您可以设置隐藏输入,或者如果您使用 AJAX,只需在其中使用它们来调用最终的 Cake 函数。

您必须查看用户如何选择它们,然后将该 ID 存储在某个变量中以使用它。发布、获取、会话、Cookie...

于 2012-11-18T20:08:15.490 回答