![](/img/trans.png)
[英]Laravel Voyager SQLSTATE[HY000]: General error: 1364 Field 'id' doesn't have a default value
[英]SQLSTATE[HY000]: General error: 1364 Field 'mov_id' doesn't have a default value
有一個與電影和類別這兩個表有關的問題
類別屬於電影,這意味着我可以為電影設置多種類別。
所以在類別模型中,我將這段代碼
public function movie(){
return $this->belongsTo('App\Movie', 'mov_id');
}
我要設置的category.mov_id = movie.id
在控制器部分,當我放空白時,驗證很好,當然會顯示錯誤消息。 但是問題是無法保存到數據庫並且顯示mov_id沒有默認值
public function store(Request $request)
{
$rules = array(
'cat_title' => 'required'
);
$validator = Validator::make(Input::all(), $rules);
if ($validator->fails()) {
return Redirect::to('category/create')
->withErrors($validator);
} else {
$movie = new Category();
$movie->cat_title = Input::get('cat_title');
$movie->save();
Session::flash('message', 'Successfully created!');
return Redirect::to('category');
}
}
最后,這是查看文件
<div class="table-container">
<form method="POST" action="{{ route('category.store') }}" role="form">
{{ csrf_field() }}
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<input type="text" name="cat_title" id="cat_title" class="form-control input-sm" placeholder="分類">
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12">
<input type="submit" value="Save" class="btn btn-success btn-block">
<a href="{{ route('category.index') }}" class="btn btn-info btn-block" >Back</a>
</div>
</div>
</form>
</div>
類別架構
Schema::create('category', function (Blueprint $table) {
$table->increments('id');
$table->string('cat_title');
$table->integer('mov_id');
$table->timestamps();
});
錯誤消息會告訴您確切的問題是什么。 您正在嘗試插入類別記錄,但是您的表單不包含mov_id
值。 您的架構指定mov_id
為整數,但不指定任何默認值,也不能為null。 因此,如果您不告知Laravel,則不知道將其用於mov_id
,因此它無法創建記錄。
$table->integer('mov_id')->nullable();
但是我認為您將會遇到更大的問題。 一個類別可能根本不應該有電影ID-這意味着每個類別最多只能有1個電影。
我認為您真正想要的是電影和類別之間的多對多關系。 這意味着一部電影可以具有多個類別,並且一個類別可以分配給許多電影。
Laravel文檔對此進行了很好的描述,並提供了一個示例 。 您需要更新您的Laravel關系:
// Category model
public function movie() {
return $this->belongsToMany('App\Movie');
}
// Movie model
public function category() {
return $this->belongsToMany('App\Category');
}
和您的架構:
Schema::create('movies', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
// ... etc
});
Schema::create('categories', function (Blueprint $table) {
$table->increments('id');
$table->string('cat_title');
// ... etc
});
Schema::create('category_movie', function (Blueprint $table) {
$table->integer('category_id');
$table->integer('movie_id');
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.