代码之家  ›  专栏  ›  技术社区  ›  Muhammad Owais

Laravel(API):我需要使用API请求(react)插入包含多个博客类别的文章。

  •  0
  • Muhammad Owais  · 技术社区  · 6 年前

    我正在尝试为博客文章创建一个功能,该功能假设通过使用构建在React上的前端应用程序和构建在Laravel(5.6)上的API来添加。

    我试过两种方法,但不幸的是,我无法找出如何将多个博客类别附加到单个帖子中

    blogpostapicontroller.php

    public function store(Request $request)
    {
        $BlogPosts = new BlogPosts;
        $BlogPosts->tutor_id = $request->user()->tutor->id;
        $BlogPosts->title = $request->title;
        $BlogPosts->BlogCategories = $request->BlogCategories; /* Unknown column*/
        $BlogPosts->slug = str_slug($request->title);
        $BlogPosts->short_description = $request->short_description;
        $BlogPosts->post_content = json_encode($request->post_content);
        $BlogPosts->featured_image = $request->featured_image;
        $BlogPosts->status = $request->status;
    
        $BlogPosts->BlogCategories()->attach($request->blog_categories_id);
        $BlogPosts->save();
    
        return $BlogPosts::create($request->all());
    }
    

    blogpostsmodel.php

    class BlogPosts extends Model{
    public $table = 'blog_posts';
    
    const CREATED_AT = 'created_at';
    const UPDATED_AT = 'updated_at';
    
    protected $dates = ['deleted_at'];
    
    public $fillable = [
        'tutor_id',
        'title',
        'slug',
        'short_description',
        'post_content',
        'featured_image',
        'status'
    ];
    
    /**
     * The attributes that should be casted to native types.
     *
     * @var array
     */
    protected $casts = [
        'id' => 'integer',
        'tutor_id' => 'integer',
        'title' => 'string',
        'slug' => 'string',
        'short_description' => 'string',
        'post_content' => 'string',
        'featured_image' => 'string',
        'status' => 'string'
    ];
    
    /**
     * Validation rules
     *
     * @var array
     */
    public static $rules = [
    
    ];
    
    /**
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     **/
    public function tutor()
    {
        return $this->belongsTo(\App\Models\Tutor::class);
    }
    
    public function BlogCategories(){
        return $this->belongsToMany(BlogCategories::class);
    }
    
    // Category.php
    public function BlogPosts(){
        return $this->hasMany(BlogPosts::class);
    }
    

    }

    blogCategoryBlogPost.php文件

    Schema::create('blog_categories_blog_posts', function(Blueprint $table) {
            $table->integer('blog_categories_id')->unsigned();
            $table->integer('blog_posts_id')->unsigned();
            $table->foreign('blog_categories_id')->references('id')->on('blog_categories')->onUpdate('cascade')->onDelete('cascade');
            $table->foreign('blog_posts_id')->references('id')->on('blog_posts')->onUpdate('cascade')->onDelete('cascade');
        });
    

    API响应

    Please find the screenshot for API response

    1 回复  |  直到 6 年前
        1
  •  0
  •   IndianCoding    6 年前
    1. 您应该在设置关系之前保存模型,否则模型没有主键(ID)来设置关系。
    2. 最好使用与百口虫关系同步(方便更新)。
    3. 您应该返回保存的模型,现在创建副本并返回它。
    4. 类别贝尔格莫尼员额,和员额贝尔格莫尼类别。

    控制器:

    public function store(Request $request)
    {
        $BlogPosts = new BlogPosts;
        $BlogPosts->tutor_id = $request->user()->tutor->id;
        $BlogPosts->title = $request->title;
        $BlogPosts->slug = str_slug($request->title);
        $BlogPosts->short_description = $request->short_description;
        $BlogPosts->post_content = json_encode($request->post_content);
        $BlogPosts->featured_image = $request->featured_image;
        $BlogPosts->status = $request->status;
    
        $BlogPosts->save();
    
        $BlogPosts->BlogCategories()->sync($request->blog_categories_id);
    
        return $BlogPosts;
    }
    

    BlogPosts模型:

    public function BlogCategories(){
        return $this->belongsToMany(BlogCategories::class, 'blog_categories_blog_posts');
    }
    

    BlogCategories模型:

    public function BlogPosts(){
        return $this->belongsToMany(BlogPosts::class, 'blog_categories_blog_posts');
    }
    
    推荐文章