2016-12-02 55 views
0

我有更新页面的请求。当添加新的页面请求是这样的:Laravel 5.3带有例外的唯一规则的更新请求

'title'=>'required|max:70|unique:pages', 

,但是当我更新页面的标题必须是唯一的,但需要检查所有其他游戏,除了已经进入了一个。 我向Google搜索了所有可能的解决方案,但没有任何效果。

我想:

'title'=>"required|max:70|unique:pages, title,{$this->id}", 
'title'=>'required|max:70|unique:pages, title,'.$this->id, 
'title'=>'required|max:70|unique:pages, title,'.$this->input('id'), 

规则是内部规则方法

public function rules() 
{ 
    return [ 
    'title'=>'required|max:70|unique:pages, title,'.$this->id, 
    ... 
    ] 

我得到这个错误:

SQLSTATE[42S22]: Column not found: 1054 Unknown column ' title' in 'where clause' (SQL: select count(*) as aggregate from `pages` where ` title` = test and `id` <>) 

在我的MySQL我有ID(小写)列即主键和标题列(也是小写)。

回答

4

您在这里有一个BUG:

public function rules() 
{           This space is causing trouble 
              | 
    return [ 
    'title'=>'required|max:70|unique:pages, title,'.$this->id, 
    ... 
    ] 

应该

public function rules() 
{           Space removed 
              | 
    return [ 
    'title'=>'required|max:70|unique:pages,title,'.$this->id, 
    ... 
    ] 
+0

是的,现在它没有显示任何错误,但好像不排除此ID。它给我验证错误。 标题已被采纳。 – KondukterCRO

+0

这取决于什么是'$ this',你的模型有一个'rules()'方法?如果没有,你是从错误的课程中获得ID ......所以这是一个不同的问题,请用更多的信息开一个不同的问题。 –

+0

antonio,最有可能的形式请求 – lagbox

1
SQLSTATE[42S22]: Column not found: 1054 Unknown column ' title' 

看来,它是寻找一个名为“标题”一栏,它可能是愚蠢的,但仔细检查,列名,而不在beggining空间发送。