База данных содержит 3 таблицы: 1 таблица видов, панель и перекрестная таблица видов.Отношения следующие 1 панель может содержать множество видов.Поэтому я использую отношения 1 ко многим.Данные, которые должны быть вставлены в таблицу названия таблицы и описания.Таблица видов остается неизменной.А также данные должны быть введены в кросс-таблицу.
Для моей таблицы панели: ключ добавлен, но имя и описание столбца только что получили значение NULL вместо значения.Для моей кросс-таблицы: ничего не вставлено.
Почему мои данные не могут быть вставлены?Я что-то упускаю, я этого не вижу.Спасибо за помощь.
Таблица видов
+----+-----------------+
| id | name |
+----+-----------------+
| 1 | Spider Monkey |
+----+-----------------+
| 2 | Squirrel Monkey |
+----+-----------------+
| 3 | Vervet Monkey |
+----+-----------------+
| 4 | Dorset Horn |
+----+-----------------+
| 5 | Dorper |
+----+-----------------+
| 6 | Javan Warty Pig |
+----+-----------------+
| 7 | Wild Boar |
+----+-----------------+
Как должны выглядеть данные в других таблицах.
Панель стола
+----+------+-------------+
| id | name | description |
+----+------+-------------+
| 1 | P001 | Monkeys |
+----+------+-------------+
| 2 | P002 | Sheeps |
+----+------+-------------+
| 3 | P003 | Porks |
+----+------+-------------+
таблица видов_панели
+----+----------+---------+
| id | panel_id | species |
+----+----------+---------+
| 1 | 1 | 1 |
+----+----------+---------+
| 2 | 1 | 2 |
+----+----------+---------+
| 3 | 1 | 3 |
+----+----------+---------+
| 4 | 2 | 4 |
+----+----------+---------+
| 5 | 2 | 5 |
+----+----------+---------+
| 6 | 3 | 6 |
+----+----------+---------+
| 7 | 3 | 7 |
+----+----------+---------+
Мой код:
видов.все
<code> <template>
<b-card title="Database" >
<div class="container-fluid">
<div class="row md-4" v-show="selectedSpecies.length > 0">
<div class="col-2">
<label for="example-date-input">Delivery date</label>
</div>
<div class="col-6">
<label for="example-date-input">Describe your panel</label>
</div>
</div>
<div class="row">
<div class="col-2">
<b-form-input v-model="date" class="form-control" type="date" value="getDate" ></b-form-input>
<pre class="mt-3 mb-0">{{ date }}
{{ description }}
Запросить пул {{row.item.name}} {{row.item.name}}
Часть javascript
// used to get ids from my array
idsSelecter (array){
this.selectedSpecies.forEach(obj => {
array.push(obj.id);
});
console.log(array);
return array;
},
storePanel: async function(){
axios.post('/panel',{
description: this.description,
date: this.date,
selectedIds: this.idsSelecter(selectedIds)
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
})
.finally(function () {
// always executed
});
kind.php
class Specie extends Model
{
public function panel() {
return $this->belongsTo('App\Panel');
}
}
panel.php
class Panel extends Model
{
protected $guarded = [];
public function species()
{
return $this->hasMany('App\Specie', 'panel_id');
}
}
index.blade.php
@extends('layouts.app')
@section('content')
<div class="container col-sm-10">
{!! Form::open(['action' => 'PanelController@store', 'method' => 'POST'])!!}
<species-overview :speciedata='<?php echo json_encode($species); ?>'
></species-overview>
{!! Form::close() !!}
</div>
@endsection
PanelController.php
public function store(Request $request)
{
$panel = Panel::create([
'description' => $request->description,
'date' => $request->date
]);
foreach($request->selectedIds as $selectedid){
$specie = new Specie(['specie_id' => $selectedid]);
$specie->panel()->assosciate($panel);
$panel->save();
}
return redirect()->route('specie.index')->with('success','Data Added');
}