【发布时间】:2020-03-05 22:43:37
【问题描述】:
我正在尝试在我的应用程序中添加一个选择框,以便用户选择一个类别来分配给他的帖子。
我的数据库中的 Categories 和 Post 表是分开的,Posts 中有一个 category_id 列,它是 Categories 表的外键。
我的帖子创建刀片是:
<div class="container">
<form method="POST" action="/posts">
{{csrf_field()}}
<div>
<label>Title</label>
<input type="text" name="title" required>
</div>
<div>
<label>Slug</label>
<input type="text" name="slug" required>
</div>
<div>
<label>Subtitle</label>
<input type="text" name="subtitle" required>
</div>
<div>
<label>Content</label>
<input type="text" name="content" required>
</div>
<div class="form-group">
<select class="form-control" name="categories_id">
@foreach($categories as $category)
<option value="{{$category->title}}">{{$category->title}}</option>
@endforeach
</select>
</div>
<div style="margin-top: 10px">
<input type="submit" value="Make Post">
</div>
</form>
</div>
我的帖子控制器上的存储功能是:
public function store(Request $request)
{
$post = new Post();
$post->title = request('title');
$post->slug = request('slug');
$post->subtitle = request('subtitle');
$post->content = request('content');
$post->save();
return redirect('/posts');
}
创建函数是
public function create()
{
$categories = Category::all(['id','title']);
return view('posts.create',compact('categories',$categories));
}
最后是我的模型
namespace App;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
public $table = "posts";
}
目前,当我尝试选择一个选项时,我得到一个
SQLSTATE[HY000]:一般错误:1364 字段 'category_id' 没有默认值。
我不希望它为空。并且每个帖子至少应与 1 个类别相关联
【问题讨论】:
-
我认为您在保存帖子时没有“保存”categories_id 值($post->save())。不应该是 $post->categories_id = $request->input('categories_id') 吗?
标签: php laravel laravel-5.8