2015-09-21 143 views
2

我必須有列此表的武器weaponID,weaponName,wStock,wDesclaravel 4的獨特規則對更新數據庫記錄

在控制器內我更新的功能,我有這樣的一套規則

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',但只有weaponID?有沒有辦法解決這個問題?

回答

1

裏面你的武器類,你需要更改主鍵:

class Weapon extends Eloquent { 

    protected $primaryKey = 'weaponID'; 

} 

,然後改變其獨特的規則:

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

仍然有同樣的錯誤,這裏是我的武器模型類 '<?php use Illuminate \ Auth \ UserTrait; 使用Illuminate \ Auth \ UserInterface; 使用Illuminate \ Auth \ Reminders \ RemindableTrait; 使用Illuminate \ Auth \ Reminders \ RemindableInterface; class Weapon extends Eloquent implements UserInterface,RemindableInterface { \t use UserTrait,RemindableTrait; \t public $ timestamps = false; \t protected $ primaryKey ='weaponID'; \t protected $ table ='weaponTbl; \t protected $ hidden = array('password','remember_token'); } ' – devOG

+1

嗯......嘗試將唯一規則更改爲'unique:weaponTbl,weaponName'。 $ id。 ',weaponID'' –

+0

謝謝!有效!非常感謝! :) – devOG