【发布时间】:2018-11-23 19:53:18
【问题描述】:
我真的希望我不会因为一个模糊的问题而被骂,但我正在努力寻找一个好的答案。我正在寻找在 Laravel 刀片模板中检查嵌套匹配的最有效方法。
我对 PHP 很熟悉,但仍然习惯于使用框架,并且我正在尝试正确(也是最有效)地使用它。
我有一个编辑用户页面,我的用户被分配了权限。就像论坛一样,实际上有数百个权限可供选择。
显示编辑页面,下面有一个可能的权限表,带有一个单选按钮,表示是/否。
@foreach($permissionsAvailable as $permission)
<tr>
<td class="hub3Blue hub3FontSmall">{{ $permission->name }}</td>
<td class="hub3FontSmall">{{ $permission->description }}</td>
<td>
<form name="{{$permission->id}}">
<div class="form-group">
<div class="form-check form-check-inline">
<input class="form-check-input permissionCheck" type="radio" id="{{$permission->id}}"
onclick="sendPermission('{{$permission->id}}','yes')" name="hasPermission">
<label class="form-check-label" for="hasPermission">Yes</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input permissionCheck" type="radio" id="{{$permission->id}}"
onclick="sendPermission('{{$permission->id}}','no')" name="hasPermission">
<label class="form-check-label" for="hasPermission">No</label>
</div>
</div>
</form>
</td>
</tr>
@endforeach
有一个 jQuery 函数可以更新 permission_user 表,添加或删除权限。这可以。我想要实现的是一种检查所有是/否单选按钮的方法,但我正在努力寻找一种“最佳实践”的方法。
我认为最简单的方法是在页面底部包含一个 PHP 函数,但这需要为每次迭代查询数据库以查看权限是否已分配给该用户。
我想的另一种方法是将权限表完全引入刀片模板,即将它与其他数据压缩,然后与数组数据进行比较。我认为速度更快,但仍在做很多工作。如果我有 100 个用户,有 100 个可能的权限,那[可能] 是一个包含 10,000 个条目的数组。
各位,我们将不胜感激。
SQL 结构/关系
Table: permission_user
+---------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| permission_id | int(10) unsigned | NO | MUL | NULL | |
| user_id | int(10) unsigned | NO | MUL | NULL | |
| created_at | timestamp | YES | | NULL | |
| updated_at | timestamp | YES | | NULL | |
+---------------+------------------+------+-----+---------+----------------+
所以当权限表被循环时,它需要检查每个permission_id 以查看它是否有对应的user_id 存在的行。
check if [row_exists] in permission_user WHERE permission_id = permission_id AND user_id = user_id
...是我能描述它的最好方式。
我知道我可能要求的是不存在的效率。
【问题讨论】:
-
如果您发布用户/权限模型关系会很好。
-
我很抱歉。添加了表结构。可能没有比简单地检查每个循环更好的方法了。
标签: php laravel eloquent laravel-blade