使用laravel 4的唯一规则来更新数据库记录

时间:2015-09-21 07:54:30

标签: php laravel laravel-4 laravel-validation

我有这个表武器,其列有武器ID,武器名,wStock,wDesc

在控制器内部的更新功能中,我有这套规则

public function c_updateSystemUser($id)
{
    $rules = array(
            'weaponName'  => 'required|min:2|max:50|regex:/^[a-zA-Z0-9\-\s]+$/|unique:weaponTbl,weaponName,' . $id,
            'wStock'      => 'required|numeric',
            'wDesc'       => 'required|min:1|max:100|regex:/^[a-zA-Z0-9\-\s]+$/' 

        );
    //other stuff
}

当我更新并且只更改了wStock它有问题因为它说武器名已经存在。所以我使用了独特的规则

unique:weaponTbl,weaponName,' . $id,

因为我想除了我目前正在处理的记录,但是当我测试它时我有这些错误

Column not found: 1054 Unknown column 'id' in 'where clause'
(SQL: select count(*) as aggregate from `weaponTbl` where `weaponName` = unicorn and `id` <> 1)

为什么它只使用id,而我的表中没有'id'但只有武器ID?有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:1)

在武器类中,您需要更改主键:

class Weapon extends Eloquent {

    protected $primaryKey = 'weaponID';

}

然后将唯一规则更改为:

unique:weaponTbl,weaponName,' . $id . ',weaponID'