我正在尝试将数据从表单存储到DB。我有带有列subject
,subjectType(Economic, Informatic subject)
和subjectType_subject(pivot table)
的表。我可以将数据存储到Subject
表中,但是我需要将ID存储到subjectType_subject
表中。我认为我有一个下拉式导航栏-经济学科和信息学学科。如果要添加经济主题,则需要在数据透视表中添加ID以显示它。
请问我该怎么做?
现在我只能将数据存储到“主题”表中,并且它不会出现在“经济主题”部分:
SubjectController
public function create() {
}
public function store(Request $request)
{
$this->validate($request, [
'name' => 'required',
'abbreviation' => 'required',
'description' => ''
]);
$subject = new Subject();
$subject->name = $request->input('name');
$subject->abbreviation = $request->input('abbreviation');
$subject->description = $request->input('description');
$subject->save();
return redirect()->back()
->with('success', 'Úspěšne jsi vytvořil nový předmět.');
}
}
主题模型
public $table = 'Subject';
protected $fillable = [
'name',
'abbreviation',
'description'
];
public function subject_type() {
return $this->belongsToMany('App\Subject_type', 'subjectType_subject');
}
SubjectType模型
public $table = 'SubjectType';
public function subject() {
return $this->belongsToMany('App\Subject', 'subjectType_subject');
}
答案 0 :(得分:0)
只需在下面添加雄辩的查询
$subject->save();
赞:
$subjecttype= new SubjectType;
$subjecttype->subjectid= $request->input(‘subjectid’);
$subjecttype->save();
return redirect()->back()
->with('success', 'Úspěšne jsi vytvořil nový předmět.')
答案 1 :(得分:0)
首先,尝试修正您的命名约定。如果遵循laravel的命名约定,事情会容易得多。 Here is the guide。
subjectType
更改为subject_type
)subjectType_subject
更改为subject_subject_type
)public function subject_type()
更改为public function subject_types()
,也将public function subject()
更改为public function subjects()
然后使用laravels attach
关键字填充数据透视表。
$subject = new Subject();
$subject->name = $request->input('name');
$subject->abbreviation = $request->input('abbreviation');
$subject->description = $request->input('description');
$subject->save();
$subject->subject_types()->attach(id_of_your_subject_type); // for example,
the id of economics in your subject_type table is 1, then put 1 inside the parenthesis