我正在創建一個基本的CMS來教導自己Laravel和PHP的基礎知識。Laravel 4:獨特(數據庫)不驗證
我有一個'網頁'表,我正在存儲一個url_title。我希望這個URL標題由於顯而易見的原因是唯一的。但是,無論我做什麼來驗證它,都會失敗。無論如何它只是保存。我相信這很簡單。你能發現這個代碼有什麼問題嗎?
我也在使用前視圖,也沒有驗證。我已經嘗試了將硬編碼值作爲唯一方法的最後一個選項,並且它也失敗了。
http://anahkiasen.github.io/former/
http://laravel.com/docs/validation#rule-unique
國:獨特:表,列,除非,idColumn
這裏是我的控制器:
public function store()
{
$validation = Pages::validate(Input::all());
if($validation->fails()) {
Former::withErrors($validation);
return View::make('myview');
} else {
Pages::create(array(
'title' => Input::get('title'),
'url_title' => Input::get('url_title'),
'status' => Input::get('status'),
'body' => Input::get('body'),
'seo_title' => Input::get('seo_title'),
'seo_description' => Input::get('seo_description')
));
//check which submit was clicked on
if(Input::get('save')) {
return Redirect::route('admin_pages')->with('message', 'Woo-hoo! page was created successfully!')->with('message_status', 'success');
}
elseif(Input::get('continue')) {
$id = $page->id;
return Redirect::route('admin_pages_edit', $id)->with('message', 'Woo-hoo! page was created successfully!')->with('message_status', 'success');
}
}
}
這裏是我的模型:
class Pages extends Eloquent {
protected $guarded = array('id');
public static $rules = array(
'id' => 'unique:pages,url_title,{{$id}}'
);
public static function validate($data) {
return Validator::make($data, static::$rules);
}
}
我已嘗試以下內容:
public static $rules = array(
// 'id'=> 'unique:pages,url_title,{{$id}}'
// 'id'=> 'unique:pages,url_title,$id'
// 'id'=> 'unique:pages,url_title,:id'
// 'id'=> 'unique:pages,url_title,'. {{$id}}
// 'id'=> 'unique:pages,url_title,'. $id
);
任何想法?我與創造前者的人交談過。他無論如何也無法做出決定。他建議追蹤它以找到我們查詢Laravel使用哪些查詢來檢查唯一性,並嘗試直接在我的數據庫中運行以查看會發生什麼。我找不到查詢來執行此操作。有誰知道在哪裏追蹤它?
非常感謝
在數據庫中使用一個唯一的列,以便重複失敗?....如果沒有任何工作,至少可以保持完整性。 – itachi
謝謝itachi。我不確定我是否遵守。我試圖使用ID,這是唯一的測試,我想url_title也是唯一的。那有意義嗎? – T2theC
如果id列是自動增量,那麼它將以任何一種方式都是唯一的(意味着不需要針對id進行測試)。所有你需要看看slug是否獨一無二。 – itachi