如何使用belongsTo关联向数据库添加索引

时间:2012-11-18 15:13:23

标签: cakephp

我正在寻找将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中传递吗?还有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

您需要提供要保存在数据库中的任何信息。这意味着您可以使用您已经说明的Auth信息,也可以通过表格获取信息,您可以从中选择所有可用的成员。 无论哪种方式,信息都必须来自某个地方。它不能无中生有。

答案 1 :(得分:0)

如果用户正在选择或选择A,B或C,他们可以以某种方式存储他们的数据并处理它们。

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

您必须查看用户如何选择它们,然后将该ID存储在某个变量中以与其一起使用。 POST,GET,SESSIONS,COOKIES ......