我已从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表。
感谢。
答案 0 :(得分:2)
有两种方法可以更新您的ARO:
将AclBehavior附加到用户模型并编写一个方法,使用用户模型的保存方法保存CSV数据。
// In User Model:
public $actsAs = array(
'Acl' => array(
'type' => 'requester'
);
// In your importCSV() method assuming in your UsersController:
$this->User->saveMany($users);
如果您在不使用Model :: save()方法的情况下直接将用户数据导入数据库,请通过命令行使用acl shell输入ARO。
cake acl create aro parent_ARO User.user_id
要理解上述语法,只需输入cake acl create
即可。
您必须使用已添加的所有user_ids运行上述命令。
<强>更新强>
创建一个文件: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。