Cake php如何更新AROS

时间:2014-09-11 09:34:04

标签: cakephp cakephp-2.0 cakephp-2.1 cakephp-2.3

我已从CSV文件导入用户数据。现在,当我尝试更新用户时,它会给我以下错误

AclNode::node() - Couldn't find Aro node identified by "Array ( [Aro0.model] => User [Aro0.foreign_key] => 292 ) "

原因是我在用户的CSV文件中导入了数据,但我的AROS没有更新。

我已使用以下命令行"cake AclExtras.AclExtras aco_sync"更新了ACO。

任何人都可以告诉我如何使用CSV导入生成的新用户ID来更新我的AROS表。

感谢。

2 个答案:

答案 0 :(得分:2)

有两种方法可以更新您的ARO:

  1. 将AclBehavior附加到用户模型并编写一个方法,使用用户模型的保存方法保存CSV数据。

    // In User Model:
    public $actsAs = array(
      'Acl' => array(
        'type' => 'requester'
    );
    
    // In your importCSV() method assuming in your UsersController:
       $this->User->saveMany($users);
    
  2. 如果您在不使用Model :: save()方法的情况下直接将用户数据导入数据库,请通过命令行使用acl shell输入ARO。

    cake acl create aro parent_ARO User.user_id

  3. 要理解上述语法,只需输入cake acl create即可。 您必须使用已添加的所有user_ids运行上述命令。

    <强>更新

    1. 您可以创建一个查找所有新用户的shell脚本,并可以在ARO模型上使用Model :: create()和Model :: save()方法,如下所示:
    2. 创建一个文件:app / Console / Command / AclGenShell.php。

      class AclGenShell extends AppShell {
      
          public $uses = array('User', 'Aro);
      
          public function main() {
              $users = $this->User->find('all');
              foreach ($users as $user) {
                  $this->Aro->create();
                  $this->Aro->save(array(
                     'model' => 'User',
                     'foreign_key' => $user['User']['id'],
                     'parent' => 'parent_ARO_alias'
                  ));
              }
          }
      }
      

      然后运行: cake acl_gen

答案 1 :(得分:0)

查看ACL Plugin。 它有助于创建ARO和ACO。