I just created a categories
table and related it to articles
table.
$table->foreign('category_id')->references('id')->on('categories');
I also created a category selection field with name 'category_id' in the 'Create Article' form. Now while trying to create a new article, after I hit the submit button, I get the following error:
QueryException in Connection.php line 725: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (
laratry
.articles
, CONSTRAINTarticles_category_id_foreign
FOREIGN KEY (category_id
) REFERENCEScategories
(id
)) (SQL: insert intoarticles
(title
,body
,published_at
,user_id
,updated_at
,created_at
) values (This is a test article, This is yet another test article for trying to find what the error is., 2016-08-15 16:11:53, 1, 2016-08-15 16:11:53, 2016-08-15 16:11:53))
If I print_r( $request->all() ) ,
Array (
[_token] => E4fWVTpf2T5y23uOnaA0EK1hHyi2hYvkJZa99V3G
[title] => This is a test article
[body] => This is yet another test article for trying to find what the error is.
[category_id] => 1
[published_at] => 2016-08-15
[tag_list] => Array ( [0] => 1 )
)
My Controller's store method for article:
class ArticlesController extends Controller
{
public function store(Request $request)
{
Auth::user()->articles()->create($request->all());
flash()->success('Your article has been created.');
return redirect('articles');
}
}
My Models:
class Article extends Model
{
protected $fillable = ['title','body','published_at','user_id'];
protected $dates = ['published_at','created_at'];
public function category()
{
return $this->belongsTo('App\Category');
}
}
--
class Category extends Model
{
protected $fillable = ['name','slug'];
protected $dates = ['created_at'];
public function articles()
{
return $this->hasMany('App\Article');
}
}
You miss the category_id.
Change
protected $fillable = ['title','body','published_at','user_id'];
To
protected $fillable = ['title','body','published_at','user_id', 'category_id'];
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.