我目前正在为我的网站开发一个简单的博客系统,我正在使用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'
];
}
之前我曾经做过一次这样做,并试图重做它,但似乎无法弄清楚出了什么问题。
提前致谢!
答案 0 :(得分:0)
要使create()
工作,请确保使用具有相同名称的列。例如,如果您的列名称为title
,则您还需要在表单中使用title
而不是news-title
:
{!! Form::text('title', null, ['class' => 'form-control']) !!}
答案 1 :(得分:0)
当您使用此Article::create();
时,它表示您的所有输入名称应与表列名称相同。
例如:
<input name="title" ...
与相应表
news-title
相同
DB::table('table_name')->insert(
[
'name' => $input->news-title
.....
]
);