gpt4 book ai didi

php - store 函数不将数据保存到数据库

转载 作者:行者123 更新时间:2023-11-29 06:27:52 24 4
gpt4 key购买 nike

我有一个表单,用户可以在其中输入不同的数据,该表单包含两部分。

enter image description here

第一部分数据将保存到名为pages的表中(完美),第二部分数据将保存到名为parameters的表参数包含一个包含重复数据名称的列(不起作用),

这是表格的外观。

enter image description here

我已经为 paramatersprebids 表创建了一个 PIVOT 表,如下所示。

预投标参数,

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');
}
}

最后我有页面 Controller 存储功能来保存这样的数据。

 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) 店内函数时,我得到以下内容

enter image description here

注意:参数和 prebid Controller 只是空的

现在,当我单击提交按钮时,只有第一部分数据保存到数据库中,其余数据不会保存到数据库中。

这里是仓库:demo

我的代码做错了什么?不过,我是 Laravel 新手。

最佳答案

有几件事正在发生。我在您显示的模型中没有看到 tags 的实际关系。您在主页上有标签的关系吗?

此外,这一行:

$page->prebids()->sync($request->prebids, false);

正在寻找来自prebids请求的输入,但我在您的请求对象中没有看到该输入。我看到params_value,它不会被发送到sync()方法。因此,不会同步。

试一试:

$page->prebids()->sync($request->params_value, false);

关于php - store 函数不将数据保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58459500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com