Laravel 5在数据库中存储空行?

时间:2017-10-25 06:45:33

标签: php laravel

我目前正在为我的网站开发一个简单的博客系统,我正在使用Laravel 5.5,但我遇到了问题。每当我使用我创建的表单创建一篇新文章时,它就会在我的数据库中存储一个空行而不是表单中的数据......

这是我存储文章的功能:

public function newsStore()
{
    $input = Request::all();

    Article::create($input);

    return $input;
}

根据我正在遵循的教程应该这样做。这是我目前使用的形式:

{!! Form::open(['url' => 'news']) !!}
    <!-- Article Title -->
    <div class="form-group row">
        {!! Form::label('title', 'Title:', ['class' => 'col-2 col-form-label']) !!}
        <div class="col-10">
            {!! Form::text('title', null, ['class' => 'form-control']) !!}
        </div>
    </div>
    <!-- Article Description -->
    <div class="form-group row">
        {!! Form::label('description', 'Description:', ['class' => 'col-2 col-form-label']) !!}
        <div class="col-10">
            {!! Form::text('description', null, ['class' => 'form-control']) !!}
        </div>
    </div>
    <!-- Article Excerpt -->
    <div class="form-group row">
        {!! Form::label('excerpt', 'Excerpt:', ['class' => 'col-2 col-form-label']) !!}
        <div class="col-10">
            {!! Form::text('excerpt', null, ['class' => 'form-control']) !!}
        </div>
    </div>
    <!-- Article Image -->
    <div class="form-group row">
        {!! Form::label('image', 'Image:', ['class' => 'col-2 col-form-label']) !!}
        <div class="col-10">
            {!! Form::file('image') !!}
        </div>
    </div>
    <!-- Article Message -->
    <div class="form-group row">
        {!! Form::label('message', 'Message:', ['class' => 'col-2 col-form-label']) !!}
        <div class="col-10">
            {!! Form::textarea('message', null, ['class' => 'form-control', 'rows' => '7']) !!}
        </div>
    </div>
    <!-- Article Submit -->
    <div class="form-group">
        {!! Form::button('Add Article', ['class' => 'btn btn-primary waves-effect waves-light float-right', 'type' => 'submit']); !!}
    </div>
{!! Form::close() !!}

这是我正在使用的路线:

Route::post('news', 'DashboardController@newsStore'); // The articles store route

这是我的模特:

class Article extends Model
{
    protected $fillable = [
        'title',
        'description',
        'excerpt',
        'image',
        'body',
        'published_at'
    ];
}

之前我曾经做过一次这样做,并试图重做它,但似乎无法弄清楚出了什么问题。

提前致谢!

2 个答案:

答案 0 :(得分:0)

要使create()工作,请确保使用具有相同名称的列。例如,如果您的列名称为title,则您还需要在表单中使用title而不是news-title

{!! Form::text('title', null, ['class' => 'form-control']) !!}

答案 1 :(得分:0)

当您使用此Article::create();时,它表示您的所有输入名称应与表列名称相同。

例如:

<input name="title" ...与相应表

中的列调用news-title相同

如果不相同

使用Query Builder

DB::table('table_name')->insert(
    [
        'name' => $input->news-title
        .....
    ]
);

详细了解Hyphens in column names in MySQL DB