输入字段未在数据库中更新

时间:2017-11-30 15:23:20

标签: php laravel laravel-5.2

我正在开发一个laravel 5.2项目。我在帖子中引用了category_id。

我的帖子模型看起来像

class Post extends Model
{

    protected $fillable=['category_id '];


    public function category(){

        return $this->belongsTo('App\category');
    }
}

另外,我的表单看起来像

<div class="form-group">
    {!! Form::label('category_id','Category:') !!}
    {!! Form::select('category_id', $categories, '1',['class'=>'form-control']) !!}

</div>

我的表格数据

 @foreach($posts as $post)
    <tr>

        <td>{{$post->category['name']}}</td>
    </tr>
@endforeach

问题是,每当我创建一个新帖子时,类别名称都不会保存在数据库中,也不会显示在前端。

我的帖子架构表

public function up()
{
    Schema::create('posts', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('category_id')->index()->unsigned()->nullable();

});

即使我dd() post表上类别id的输入字段,它也是空的。有人可以帮我解决这个问题吗,这会让我发疯。谢谢

我正在使用资源控制器,继承我的创建请求控制器

&#13;
&#13;
 public function store(Request $request)
    {
        $user=Auth::user();
        $input = $request->all();
         Post::create($input);
        return redirect('admin/posts');
    }
&#13;
&#13;
&#13;

5 个答案:

答案 0 :(得分:0)

这是因为可填写字段只是category_id尝试在您的可填写上添加类别名称字段,如下所示。

//this are the fields that is fillable
protected $fillable=['category_id','name'];

使用此类别名称字段将能够捕获并保存数据。

答案 1 :(得分:0)

仔细检查您的可填写和输入字段是否相同。

你给予的关注你只展示了这个。

<div class="form-group">
    {!! Form::label('category_id','Category:') !!}
    {!! Form::select('category_id', $categories, '1',['class'=>'form-control']) !!}

</div>

其他领域怎么样。我们希望您的表单上也已经有了这个。

<div class="form-group">
    {!! Form::label('input_name','Name:') !!}
    {!! Form::input('name',old('name'),['class'=>'form-control', 'id' => "input_name"]) !!}

</div>

在你的商店方法中它应该是这样的

  $new_post = new Post;
   $new_post->category_id = Input::get(‘category_id’);
$new_post->name = Input::get(‘name’);
$new_post->save();

以防你没有使用$ request的填充方法

答案 2 :(得分:0)

继续发表评论。您的迁移应该如下所示。

public function up()
{
    Schema::create('posts', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('category_id')->index()->unsigned()->nullable();
        $table->string('category_name')->nullable();

});

你的模特,

class Post extends Model
{

    protected $fillable=['category_id','category_name'];

}

表格

<div class="form-group">
    {!! Form::label('category_id','Category:') !!}
    {!! Form::select('category_id', $categories, '1',['class'=>'form-control']) !!}
    {!! Form::input('category_name',old('category_name'),['class'=>'form-control', 'id' => "input_name"]) !!}

</div>

最后你的表数据应如下所示。

@foreach($posts as $post)
    <tr>
        <td>{{$post->category_name}</td>
    </tr>
@endforeach

答案 3 :(得分:0)

为了访问您的关系属性,您应该:

 $post->comment->name;

并尝试使用&#39; fill()&#39;保存时

 $post = new Post;
 $post->fill($request->all());
 $post->save();

答案 4 :(得分:0)

我在表格中使用此修复了错误。

{!! Form::select('category_id', [''=>'choose Categories'] + $categories,['class'=>'form-control']) !!}
这是在我的桌子上。

<td>{{$post->category['name']}}</td>

感谢所有人的努力。