1
我有一个Laravel 4安装,我已经添加了Confide和Entrust包。委托更新不保存在Laravel 4
我想构建一个管理界面来管理用户,角色和权限。
我已经为权限创建了一个足智多谋的控制器,并且add和destroy函数都能正常工作,但编辑没有。该记录不更新数据库中的值。
这里是我的控制器代码:
<?php
class PermissionController extends BaseController {
protected $permission;
public function __construct(Permission $permission)
{
$this->permission = $permission;
}
...
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return Response
*/
public function edit($id)
{
$permission = $this->permission->find($id);
if (is_null($permission))
{
return Redirect::route('permissions.index');
}
return View::make('permissions.edit', compact('permission'));
}
/**
* Update the specified resource in storage.
*
* @param int $id
* @return Response
*/
public function update($id)
{
$input = array_except(Input::all(), '_method');
$validation = Validator::make($input, Permission::$rules);
if ($validation->passes())
{
$permission = $this->permission->find($id);
// create name from display_name
$input['name'] = $this->_machine_str($input['display_name']);
try {
$permission->update($input);
$queries = DB::getQueryLog();
$last_query = end($queries);
print_r($queries);
die();
} catch (Exception $e) {
var_dump($e->getTraceAsString());
die();
}
return Redirect::route('permissions.show', $id);
}
return Redirect::route('permissions.edit', $id)
->withInput()
->withErrors($validation)
->with('message', 'There were validation errors.');
}
...
}
和模型:
<?php
use Zizaco\Entrust\EntrustPermission;
class Permission extends EntrustPermission
{
/**
*Soft delete enabled.
*
* @var boolean
*/
protected $softDelete = true;
protected $guarded = array('id');
/**
* Ardent validation rules
*
* @var array
*/
public static $rules = array(
'display_name' => 'required|between:4,32'
);
}
的更新工作,如果我chnage模型扩展Eloquent,所以我可能是与EntrustPermission模型。
我也检查了数据库调用,它只显示选择没有任何种类的更新。
你得到一个错误?尝试手动设置Permission中的变量,然后使用'save()',而不是使用'update($ input)'并传递参数数组。 – fideloper
@fideloper你是对的。设置值的工作,仍然是过度的update()方法不能正常工作。 – Rooneyl
正如标题下的[文档](http://laravel.com/docs/eloquent#insert-update-delete)中提到'update()'方法的部分**保存模型和关系** ,我假设它是为了保存关系模型,并且没有清楚记录。不是100%确定的。 – fideloper