【发布时间】:2020-02-15 23:04:18
【问题描述】:
我有一个表单,用户可以在其中输入不同的数据,表单包含两个部分。
第一部分数据将保存到名为pages的表中(完美),第二部分数据将保存到名为parameters的表中parameters包含一个包含重复数据名称的列(不工作),
这是表格的外观。
我为paramaters 和prebids 创建了一个PIVOT table 像这样的表。
prebid_parameter,
public function up()
{
Schema::create('prebid_parameter', function (Blueprint $table) {
$table->bigIncrements('id');
$table->bigInteger('prebid_id')->unsigned();
$table->foreign('prebid_id')->references('id')->on('prebids');
$table->bigInteger('parameter_id')->unsigned();
$table->foreign('parameter_id')->references('id')->on('parameters');
});
}
和 page_prebid 一样。
public function up()
{
Schema::create('page_prebid', function (Blueprint $table) {
$table->bigIncrements('id');
$table->bigInteger('page_id')->unsigned();
$table->foreign('page_id')->references('id')->on('pages');
$table->bigInteger('prebid_id')->unsigned();
$table->foreign('prebid_id')->references('id')->on('prebids');
});
}
我已经建立了这样的关系。
页面模型。
class Page extends Model
{
protected $fillable =[
"title",
"articles",
"status"
];
public function prebids(){
return $this->belongsToMany('App\Prebid');
}
}
预投标模型。
class Prebid extends Model
{
protected $fillable =["bidders_name"];
public function parameters(){
return $this->belongsToMany('App\Parameter');
}
public function pages(){
return $this->belongsToMany('App\Page');
}
}
参数模型看起来像这样。
class Parameter extends Model
{
protected $fillable =[
"params_name",
"params_value",
"bidders_name"
];
public function prebids(){
return $this->belongsToMany('App\Prebid');
}
}
最后我有页面控制器存储功能来保存这样的数据。
public function store(Request $request)
{
$page = Page::create([
'title' => $request->get('title'),
'articles' => $request->get('articles'),
'status' => $request->get('status'),
]);
$page->save();
$page->tags()->sync($request->tags, false);
$page->prebids()->sync($request->prebids, false);
return redirect("/pages")->with("sucess", "data saved");
}
当我添加 dd($request) 店内功能时,我得到以下信息
Note: parameter and prebid controllers are just empty
现在当我点击提交按钮时,只有第一部分数据保存到数据库中,其余部分不保存到数据库中。
这里是回购:demo
我的代码做错了什么?不过我是 laravel 的新手。
【问题讨论】:
-
return $this->belongsToMany('App\Prebids');是错字吗?因为模型被命名为Prebid -
@Saly3301 是的,我错了,但还是一样
-
解决了吗?
-
@devpro 不,我还在努力解决它:(
标签: php mysql sql database laravel