我正在开发一个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的输入字段,它也是空的。有人可以帮我解决这个问题吗,这会让我发疯。谢谢
我正在使用资源控制器,继承我的创建请求控制器
public function store(Request $request)
{
$user=Auth::user();
$input = $request->all();
Post::create($input);
return redirect('admin/posts');
}
&#13;
答案 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>
感谢所有人的努力。