使用View CakePHP 2.8.x时从多个表中删除记录

时间:2016-08-19 09:31:51

标签: php mysql cakephp

我正在使用CakePHP 2.8.x,我正在寻找一种方法,通过1次删除操作从2个表中删除记录。

我从3个表创建了一个视图:访问者,访客和注册。这些表通过visitor_id连接。

在访客模型中,我在$useTable中添加了视图。现在,当我按下删除时,例如访问者1,我想从访问者1的访客和注册表中删除记录,并将访问者信息保存在访问者的表中

我确实找到了$this->Visitor->delete($id),但是我需要将哪些参数添加到此函数中,所以我只能删除来宾和注册表中的记录?

如果我需要提供更多信息,我很乐意提供帮助! Thx提前

更新:表格已关联。这些是模型:

访问者:

public $hasMany = array(
    'Guest' => array(
        'className' => 'Guest',
        'foreignKey' => 'visitor_id',
        'dependent' => false,
        'exclusive' => false,
    ),
    'Registration' => array(
        'className' => Registration',
        'foreignKey' => 'visitor_id',
        'dependent' => false,
        'exclusive' => false,
    ),

);  

public $belongsTo = array(

);  

注册:

public $belongsTo = array(
    'Visitor' => array(
        'className' => 'Visitor',
        'foreignKey' => 'visitor_id',
    ),

);  

旅客:

public $belongsTo = array(
    'Visitor' => array(
        'className' => 'Visitor',
        'foreignKey' => 'visitor_id',
    ),

2 个答案:

答案 0 :(得分:3)

蛋糕2中的Route::get('/{name?}', array('as' => 'profile', 'uses' => 'UsersController@profile')); 功能(参见cookbook

你必须向函数传递一系列条件。在您的情况下,您要删除(: kmp-search : (All (A) (Vectorof A) (Vectorof A) Integer -> Integer)) (define (kmp-search pattern text [next-offset 0]) 3) 的所有deleteAll()Guests的相同内容)。

visitor_id = $id

这将删除Registration的所有$this->Visitor->Guest->deleteAll(array('visitor_id' => $id)); $this->Visitor->Registration->deleteAll(array('visitor_id' => $id)); Guests,而不会触及Registrations本身

答案 1 :(得分:0)

你可以尝试一下,它对我有用

public function your_action($id=null){
    $this->MainMdel->ConnectedModel1->deleteAll(array('ConnectedModel_id' => $id));
    $this->MainMdel->ConnectedModel2->deleteAll(array('ConnectedModel_id' => $id));
    }