Php Codeigniter Datamapper ORM阵列和对象问题?
我有一个区块代码:Php Codeigniter Datamapper ORM阵列和对象问题?,php,codeigniter,codeigniter-datamapper,Php,Codeigniter,Codeigniter Datamapper,我有一个区块代码: // Creat a object $privilege = new Privilege(); // Get all privileges $privilege->get_iterated(); $privileges = $privilege->all_to_array(array('id', 'name', 'description')); // Get user privileges $user_p
// Creat a object
$privilege = new Privilege();
// Get all privileges
$privilege->get_iterated();
$privileges = $privilege->all_to_array(array('id', 'name', 'description'));
// Get user privileges
$user_privileges = $privilege->get_user_privileges(array('id' => (int) $id), FALSE);
// If user has the privilege which is marked as 1,
// otherwise marked as 0
foreach ($privileges as $key => $item) {
foreach ($user_privileges as $value) {
$privileges[$key]['has_privilege'] = (in_array($value, $item) == TRUE) ? 1 : 0;
}
}
我的问题是:
$privileges包含cms中的所有权限,$user\u privileges包含特定用户的权限。我将$privileges与$user\u privileges进行比较:如果用户具有标记为1的特权,或者标记为0,则我解析到视图中
$this->_data['privileges'] = $privileges;
在视图中,我必须使用$privileges['''](数组)来显示结果,但我想使用:$privileges->..(对象)来执行此操作
我该怎么做?非常感谢。如果省略
$privilege->all_to_数组(…)
行,您仍然可以为创建的对象分配新属性
只需更改for循环中的赋值语法,如下所示:
$privilege = new Privilege();
// IMPORTANT!
// Don't use get_iterated if you want to iterate on the results more than once!
$privilege->get();
$user_privileges = $privilege->get_user_privileges(array('id' => (int) $id), FALSE);
foreach ($privileges as $privilege) {
foreach ($user_privileges as $value) {
// the individual $privilage instances wont be cloned for the iteration
// so when we add has_privilage property they will "remember" it
// when you iterate on the same $privilages object once again in the vew
$privilege->has_privilege = (in_array($value, $item) == TRUE) ? 1 : 0;
}
}
<?php foreach ($privileges as $privilege): ?>
<?php print $privilege->name ?>
The user <?php print $privilage->has_privilage ? 'have it' : 'dont have it' ?>.
<?php endforeach; ?>
在视图中,您可以这样写:
$privilege = new Privilege();
// IMPORTANT!
// Don't use get_iterated if you want to iterate on the results more than once!
$privilege->get();
$user_privileges = $privilege->get_user_privileges(array('id' => (int) $id), FALSE);
foreach ($privileges as $privilege) {
foreach ($user_privileges as $value) {
// the individual $privilage instances wont be cloned for the iteration
// so when we add has_privilage property they will "remember" it
// when you iterate on the same $privilages object once again in the vew
$privilege->has_privilege = (in_array($value, $item) == TRUE) ? 1 : 0;
}
}
<?php foreach ($privileges as $privilege): ?>
<?php print $privilege->name ?>
The user <?php print $privilage->has_privilage ? 'have it' : 'dont have it' ?>.
<?php endforeach; ?>
用户。
您不能只选择用户可用的Privilage
实例,将筛选移到sql land吗?例如,如果您可以从用户的get\u user\u privilages
返回Privilage
ID,那么它只是一个where\u in()
。还有,为什么要使用continiousintegration标签呢?所以在这种情况下,我不能使用object,仍然像上面的代码那样使用array。