Laravel在两个不同的表中存储单一形式的值
大家好,我正在尝试将我的单一表单值存储在两个不同的表中。到目前为止,我已经创建了两个具有不同列的不同表 这是我的控制器函数,我在其中添加了两个带有列值的模型:Laravel在两个不同的表中存储单一形式的值,laravel,Laravel,大家好,我正在尝试将我的单一表单值存储在两个不同的表中。到目前为止,我已经创建了两个具有不同列的不同表 这是我的控制器函数,我在其中添加了两个带有列值的模型: public function store(Request $request, topic $topic) { $rules = [ 'name' => 'required', 'subject_type' => 'required', 'grades' => '
public function store(Request $request, topic $topic)
{
$rules = [
'name' => 'required',
'subject_type' => 'required',
'grades' => 'required',
'status' => 'required',
];
$topic_id = $request->input('topic');
if ($topic_id != '0') {
$rules['topic'] = 'required|exists:topics,id';
} else {
$topic_id = null;
}
$request->validate($rules);
$topicModel = new Topic();
$topicModel->name = $request->input('name');
$topicModel->description = $request->input('description');
$topicModel->sort_order = $topicModel->getNextSortNumber();
$topicModel->subject_id = $request->input('subject');
$topicModel->parent_id = $topic_id;
$topicModel->grades = $request->input('grades');
$topicModel->status = $request->input('status');
$topicModel->created_by = auth()->user()->id;
$topicModel->save();
$topicLookupMasterModel = new topic_lookup_master();
$topicLookupMasterModel->tlm_topic_id = $topicModel->id;
$topicLookupMasterModel->tlm_sub_topic_id = $topicModel->subject_id;
$topicLookupMasterModel->{'tlm'.$topicModel->grades} = $topicModel->grades; //here i have multiple grades.if i have grades 3,5 i want to store those values in my columns tlm_3 and tlm_5.
$topicLookupMasterModel->save();
return redirect()->route('topic.index')->with('status-success', 'Topic created successfully');
}
到目前为止,我得到的错误是数组到字符串的转换
我还试图根据gradeid将我的成绩存储在特定的列中。我有像tlm_1到tlm_15这样的列来存储成绩值
例如,如果我将等级选择为3,5,它应该存储在tlm_3和tlm_5列中
有人能帮我解决这个问题吗?先谢谢你。首先,我不喜欢你处理问题和数据库设计的方式。但要回答你的问题。下面是简短的解决方案:
$gradeColumnName=“tlm{$topicModel->grades}”//这应该是“tlm_3”或“tlm_5”之类的
现在,行$topicLookupMasterModel->{'tlm'.$topicModel->grades}=$topicModel->grades代码>更改为
$topicLookupMasterModel->$gradeColumnName=$topicModel->grades;
这有什么意义吗
编辑:
因为您的$topicModel->grades
是一个数组。让我们讨论一下
foreach($topicModel->grades as$grade){
$gradeColumnName=“tlm_{$grade}”;
$topicLookupMasterModel->$gradeColumnName=$grade;
}
在控制器中尝试以下操作:
$arrayTostring = implode(',', $request->input('grades'));
$topicLookupMasterModel{'tlm'.$topicModel->grades} = $topicModel['grades'];
仍然出现相同的错误。您的php版本是什么?我的是php7.4,在我的例子中,$topicModel->grades以多个值的形式存储在db中,就像这样[“8”,“12”]我认为解决方案是一样的,只需foreach,您就可以实现它。我收到了相同的错误,只有你能在你的答案中修改吗你在哪里使用了$arrayToString变量你能在我的控制器上修改你的答案吗?我在我的存储功能中使用它,它只是我旧代码的一部分。兄弟,别忘了发布正确的代码。