У меня есть форма, в которой пользователь может вводить разные данные, форма состоит из двух частей.
Данные первой части будут сохранены втаблица с именем pages
(работает отлично), данные второй части будут сохранены в таблице с именем parameters
таблица parameters
содержит столбец, содержащий повторяющееся имя-данные (не работает),
Вот как должна выглядеть таблица.
Я создал таблицу PIVOT table
для paramaters
и prebids
следующим образом.
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
Теперь, когда я нажимаюКнопка «Отправить»: только первая часть данных сохраняется в базе данных, остальные не сохраняются в базе данных.
Вот репозиторий: демо
Что я делаю не такс моим кодом? Я новичок в Laravel, хотя.