2016-12-14 42 views
0

我使用Bootforms到博客上的SQL錯誤:通過表單

<?php $formOptions = [ 
     'url' => 'user', 
     'sm' => [2, 5], 
     'lg' => [2, 5], 
     'method'=> 'put' 
    ]; ?> 

    {!! BootForm::openHorizontal($formOptions)->action(route('news.update', $post)) !!} 
    <input type="hidden" name="_method" value="PUT"> 
    {!! BootForm::text('Titre', $post->title) !!} 
    {!! BootForm::text('Slug', $post->slug) !!} 
    {!! BootForm::textarea('Contenu', $post->content) !!} 
    {!! BootForm::submit('Editer') !!} 
    {!! BootForm::close() !!} 

這裏編輯帖子發送空字符串是我PostController的功能,一旦我更新我的帖子:

public function update($id, Request $request) 
{ 
    $post = Post::findorFail($id); 

    $title = $request->input('title'); 

    $post->title = $title; 
    $post->content = $request->input('Contenu'); 

    $request->has('save'); 

    $post->save(); 
    return redirect(route('news.index')); 
} 

但是,一旦我編輯我的帖子,我encouter這個錯誤就像我發送空字符串:SQLSTATE [23000]:完整性約束違規:1048'標題'列不能爲空(SQL:更新posts設置title =,content =,updated_at = 2016-12- 14 20:48:25哪裏id = 3)

如果你看到哪裏出了問題,我可以利用一些幫助......

+0

錯誤不能更清楚,它告訴你,你試圖在數據庫中插入一個空的(NULL)「標題」字段,並且該字段被定義爲非空。 – Anand

+0

我知道,我說我知道它發送空字符串。問題是我不知道如何解決它。但謝謝你試圖幫助.. – Inas

+0

哎呀,沒有意識到,對於諷刺感到抱歉。 – Anand

回答

1

它看起來像您使用的形式參數無效。如果你想使用默認值,你應該讓作爲例如從GitHub:

https://github.com/adamwathan/bootforms

BootForm::text('Titre', 'title')->defaultValue($post->title); 

現在你使用後$>標題字段名,因此$ _ POST [「標題」]是隻是空着。

+0

哦,是的!這很愚蠢,但我無法弄清楚。謝謝,它的作品知道 – Inas

0

可能有兩件事可以做。

1)您應該允許title列允許空值。 ALTER TABLE tableName MODIFY table VARCHAR(200);

2)您可以先檢查是否設置了標題,如果未設置,則顯示相應的錯誤消息。

public function update($id, Request $request) 
{ 
    $post = Post::findorFail($id); 

    $title = $request->input('title'); 
    /* 
    First check if tile is not empty 
    */ 
    if (empty($title)){ 
     //show error message // echo 'Please fill in title or whatever'; 
    }else{ 

     $post->title = $title; 
     $post->content = $request->input('Contenu'); 

     $request->has('save'); 

     $post->save(); 
     return redirect(route('news.index')); 
    } 
} 

看起來很直觀,標題不應該是空的,所以在我的建議你應該先嚐試第二種方法。