我正试图以雄辩的关系保存数据。
我有以下三个表:用户表,类别表和帖子表。
发布表
Schema::create('posts', function (Blueprint $table) {
$table->increments('id');
$table->integer('category_id')->unsigned();
$table->integer('user_id')->unsigned();
$table->string('heading');
$table->timestamps();
$table->foreign('category_id')->references('id')->on('categories');
$table->foreign('user_id')->references('id')->on('users');
});
关系:
类别:
public function posts() {
return $this->hasMany('App\Post');
}
发表:
public function user() {
return $this->belongsTo('App\User');
}
public function category() {
return $this->belongsTo('App\Category');
}
用户:
public function posts($category) {
return $this->hasMany('App\Post');
}
我的问题是,如何通过在创建功能中传递标题来保存帖子。我想用这种关系。作为一个例子,我想使用这种代码:
$data = ['heading' => $heading];
$user->posts()->category()->create($data);
可以做这种事吗?
或任何其他简单的方法来实现这一目标。
修改
我需要通过使用这种关系创建帖子。
根据流程:
用户将填写表格,我将从中获取数据 类别ID。
现在我需要为该用户创建与给定类别ID相关的数据。
答案 0 :(得分:1)
这是因为在您调用posts()
方法后,您无法访问模型的关系(仅限查询构建器),因此您将无法访问category()
关系方法。这是因为posts
是一对多关系,而您并不知道您所指的创建数据的记录。
修改强>
如果您想创建新的post
条目,那么最好的方法是:
$data = ['heading' => $heading, 'category_id' => $putHereCategoryId];
$user->posts()->create($data);
您需要以某种方式获取新帖子条目的欲望类别的ID。