【问题标题】:How to show subjects name from subjects table depending on subjects codes in users table in laravel如何根据laravel中用户表中的主题代码显示主题表中的主题名称
【发布时间】:2020-03-20 17:18:56
【问题描述】:

我在名为 subj_one、subj_two、subj_three 等字段的字段中有学生表,其中包含主题代码。还有另一个名为 subject 的表,其中包含主题代码和名称。

学生表中的示例记录

ID  Name    Subj_one   Subj_two   Subj_three
1   Mohan     101         102       107
2   Sohan     245         101       147
3   Neha      101         103       247

来自主题表的样本记录

subj_code            subj_name
  101                Hindi
  102                English
  103                Physics
  147                Chemistry
  245                Math

现在如何在显示学生表中的学生数据时显示学科名称?

【问题讨论】:

  • 您可以将相关模型添加到问题中吗?

标签: laravel


【解决方案1】:

你必须创建一个关系Many To Many.

学生

ID  Name    
1   Mohan    
2   Sohan     
3   Neha      

主题

SubjectId           SubjectName
   101                Hindi
   102                English
   103                Physics
   147                Chemistry
   245                Maths

student_subject

   Id     Student_id           Subject_id
    1       1                    101
    2       1                    102
    3       1                    103
    4       2                    147
    5       2                    245

【讨论】:

  • 这是一个旧数据库,我必须这样做而不改变。
【解决方案2】:

在这种情况下,首先,为每一列创建关系。 (虽然不推荐,但是,因为您提到要在不更改数据库的情况下实现此目的)

例如对于Subj_one,在Student::class(模型)中

public function subjectOne() {
    return this->belongsTo('App\Subject', 'Subj_one', 'subj_code'); // 'foreign_key', 'other_key'
}

那么,查询学生时,使用with()

$students = Student::with('subjectOne', 'subjectTwo')->get();

稍后在你的刀片中,

@foreach($students as $student)
    {{ $student->Name }} with {{ $student->subjectOne->subj_name }}
@endforeach

请查看Eloquent Relationships docs。

【讨论】:

  • 科目表中大约有 50 个科目,每个学生的行中有 14 个科目,如 subj_one、subj_two ..... subj_14。学生表中有成千上万的学生,这就是我面临这个问题的原因。最重要的是,我必须打印很多学生的详细信息。你可以在这里查看 webs.weexperts.xyz user: 651 pass: e54ef6 登录后你会看到两个按钮,查看它们,
猜你喜欢
  • 2015-12-25
  • 2016-10-21
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 2014-01-25
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
相关资源
最近更新 更多