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变量你能在我的控制器上修改你的答案吗?我在我的存储功能中使用它,它只是我旧代码的一部分。兄弟,别忘了发布正确的代码。