Laravel (API):我需要使用 API 请求 (React) 插入具有多个博客类别的 post
Laravel (API): I need to insert the post with Multiple Blog categories by using API Request (React)
我正在尝试为博客 post 创建一个功能,该功能应该使用基于 React 构建的前端应用程序和基于 Laravel 构建的我的 api 添加(5.6 ),
我已经尝试了一些东西,但不幸的是我无法弄清楚如何将多个博客类别附加到单个 post
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
- 你应该在设置关系之前保存模型,否则模型没有主键(id)来设置关系。
- 最好使用 belongsToMany 关系同步(方便更新)。
- 您应该 return 保存模型,现在您创建副本并 return 它。
- 类别属于 Post 个类别,Post 个类别属于多个类别。
控制器:
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;
}
博客Post的模特:
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');
}
我正在尝试为博客 post 创建一个功能,该功能应该使用基于 React 构建的前端应用程序和基于 Laravel 构建的我的 api 添加(5.6 ),
我已经尝试了一些东西,但不幸的是我无法弄清楚如何将多个博客类别附加到单个 post
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
- 你应该在设置关系之前保存模型,否则模型没有主键(id)来设置关系。
- 最好使用 belongsToMany 关系同步(方便更新)。
- 您应该 return 保存模型,现在您创建副本并 return 它。
- 类别属于 Post 个类别,Post 个类别属于多个类别。
控制器:
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;
}
博客Post的模特:
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');
}