CakePHP:创建和修改的字段未在连接表中更新

时间:2013-11-07 18:38:03

标签: php cakephp cakephp-2.0 has-and-belongs-to-many

我们有两个与a相关的模型,属于许多(HABTM)关系:工作,测试。我们能够成功添加/编辑关系(我们知道因为它们出现在连接表中),但是它们的创建和修改字段永远不会被设置。

以下是模型关系:

//Job.php
public $hasAndBelongsToMany = array (
    'Test' => array (
        'classname' => 'Test', 
        'foreignKey'=>'job_id',
        'joinTable' => 'jobs_tests',
        'associatedForeignKey' => 'test_id'
    )
);

//Test.php
    public $hasAndBelongsToMany = array(
        'Job' => array(
            'className'=> 'Job',
            'joinTable'=>'jobs_tests',
            'foreignKey' => 'test_id',
            'associatedForeignKey'=> 'job_id'
            )

    );

这是/view/Jobs/edit.ctp

            echo $this->Form->select('Test', $test_options, array('class'=>'form-control', 'multiple'=>'checkbox'));
//This is always empty (nothing selected/checked). 

以下是我们在控制器中更新的方式......

    if ($this->request->isPut() ) {
        $data = $this->request->data;
        $save = $this->Job->save( $data );
        if ($save) {
            $this->Session->setFlash('Job edited');
        } else {
            $this->Session->setFlash('Error editing job');
        }
    } 

连接表中的记录是正确的,但创建和修改的记录始终为NULL。

我们做错了什么?

1 个答案:

答案 0 :(得分:0)

即使在HABTM联接表中,我也不认为蛋糕会填充createdmodified。 (我在我的一个项目中尝试过,它也没有工作,但也许它可以被激活了吗)

但是,如果您未在关联数组中将unique设置为 true ,则会在每次更新时删除并重新创建记录,因此update字段这里没有任何意义。

如果你真的想要这两个字段,那么你必须使用Has Many Trough关系。