我的 Laravel 应用程序中出现此错误。

这些是表格:

发帖

Schema::create('posts', function (Blueprint $table) { 
        $table->increments('id'); 
        $table->string('title'); 
        $table->text('content'); 
        $table->timestamps(); 
        $table->integer('user_id')->unsigned(); 
}); 

分类
Schema::create('categories', function (Blueprint $table) { 
        $table->increments('id'); 
        $table->string('name'); 
        $table->timestamps(); 
}); 

Post_Category
Schema::create('post_category', function (Blueprint $table) { 
       $table->integer('post_id')->unsigned()->unique()->nullable(); 
       $table->integer('cat_id')->unsigned()->unique()->nullable(); 
       $table->timestamps(); 
}); 

外键
Schema::table('posts', function (Blueprint $table) { 
       $table->foreign('id')->references('post_id')->on('post_category')->onDelete('cascade'); 
}); 
 
Schema::table('categories', function (Blueprint $table) { 
      $table->foreign('id')->references('cat_id')->on('post_category')->onDelete('cascade'); 
}); 

这是我的模型
class Categorie extends Model 
{ 
    protected $table = 'categories'; 
 
    public function posts() { 
      return $this->hasMany('App\PostCategory'); 
    } 
} 

...
class Post extends Model 
{ 
    public function author() { 
      return $this->belongsTo('App\User', 'user_id'); 
    } 
 
    public function featuredImage() { 
      return $this->belongsTo('App\Media', 'media_id'); 
    } 
 
    public function categories() { 
      return $this->hasMany('App\PostCategory'); 
    } 
} 

...
class PostCategory extends Model 
{ 
  protected $table = 'post_category'; 
} 

这里是 Controller

店铺类别:
public function store(StoreCategory $request) 
    { 
        $category = new Categorie; 
        $category->name = $request->input('name'); 
        $category->save(); 
 
        return redirect('/admin/categories')->with('status', 'New category created!'); 
    } 

店铺帖子
public function store(StorePost $request) 
    { 
        $post = new Post; 
        $post->title = $request->input('title'); 
        $post->content = $request->input('content'); 
        $post->media_id = $request->input('media_id'); 
        $post->user_id = $request->input('user_id'); 
        $post->save(); 
 
        return redirect('/admin/posts')->with('status', 'New post created!'); 
    } 

出现这个错误

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (the_film_corner.tfc_categories, CONSTRAINT categories_id_foreign FOREIGN KEY (id) REFERENCES tfc_post_category (cat_id) ON DELETE CASCADE) (SQL: insert into tfc_categories (name, updated_at, created_at) values (News, 2017-02-26 14:51:15, 2017-02-26 14:51:15))



谢谢

请您参考如下方法:

您在错误的表中添加外键:

Schema::table('post_category', function(Blueprint $table) { 
    $table->foreign('post_id')->references('id')->on('post')->onDelete('cascade'); 
    $table->foreign('category_id')->references('id')->on('category')->onDelete('cascade'); 
}); 

然后...
class Categorie extends Model 
{ 
    protected $table = 'categories'; 
 
    public function posts() { 
      return $this->belongsToMany('App\Category'); 
 
     // Or more specifically 
     return $this->belongsToMany('App\Category', 'post_category', 'id', 'post_id'); 
    } 
} 
 
class Post extends Model 
{ 
    // ... 
 
    public function categories() { 
      return $this->belongsToMany('App\Category'); 
 
      // Or more specifically 
      return $this->belongsToMany('App\Category', 'post_category', 'id', 'category_id'); 
    } 
} 

您可以在 Laravel 的官方指南中找到更多信息:

https://laravel.com/docs/5.4/eloquent-relationships#one-to-many


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!