【发布时间】:2016-09-13 17:51:33
【问题描述】:
这是我的权限、角色和权限角色的表结构
权限:
身份证 名字
角色:
身份证 名字
permission_role:
role_id, 权限ID
这里的 permission_role 是我的数据透视表。
在我设置了类似这样的前端,
welcome.blade.php
<form method="POST" action="/give/permission">
{!! csrf_field() !!}
<select name="role" class="selectpicker" multiple data-max-options="2">
@foreach($roles as $r)
<option value="{{$r->id}}">{{$r->name}}</option>
@endforeach
</select>
<div class="checkbox">
@foreach ($perm as $p)
{!! Form::checkbox('p[]', $p->id, in_array($p->id, $all_data)) !!}
{!! Form::label('permisssion', $p->name) !!}<br>
@endforeach
</div>
<button type="submit" class="default">Submit</button>
</form>
在我的controller.php中
public function postrolperm(Request $request,$id){
$p = Role::find($id);
$role = $request->role;
//dd($input1);
$permission = $request->p;
//dd($input2);
//
//$role = Role::where("name", "admin")->get();
if(isset($permission) && isset($role)){
$role->givePermissionTo($permission);
$role->save();
}
return redirect::back();
}
角色.php
public function givePermissionTo(Permission $permission)
{
return $this->permissions()->save($permission);
}
我无法将数据保存到数据透视表中。
我在php artisan tinker 中尝试过使用以下命令:
$role = Role::first(); //which gives me the first role with id of 1
$role->givePermissionTo(Permission::first()); // it will save the first permission to the role.
我的控制器做错了什么?
还要注意,这条路线可以正常工作。
Route::get("/pivot", function(){
$permission = new Permission;
$permission->name = "can to";
$permission->save();
$role = new Role;
$role->name = "admin2";
$role->save();
$role->givePermissionTo($permission);
return "true";
});
【问题讨论】:
-
做一个模具转储,例如
dd(I am set)在控制器函数内的if内,以确保从请求中设置角色和权限。 -
Yes..role 和权限在 die dump 后设置。
-
在
$role->givePermissionTo($permission);之后致电$role->save();。这行得通吗? -
我也收到此错误:调用非对象上的成员函数 givePermissionTo()
-
不行@MuyiwaOlu-Ogunleye
标签: php mysql laravel eloquent laravel-5.1