如何使用不是两个表中的主键的字段在两个表上建立关系

时间:2019-01-22 14:14:15

标签: php laravel

我没有更好的方法来解释这一点,这就是我想做的 我想在学生表和学生成绩表之间建立一对多关系,但我希望学生的注册号与表相关,但学生的注册号在两个表中都不是主键。 这是我的学生桌 students table 这是我的学生成绩表 student results table 我试图寻找如何做到这一点的每一个地方,但是我失败了。 请不要算是新手 请帮我,我是一个laravel初学者,它正在建设一个需要尽快开展的学校项目。 预先感谢!

2 个答案:

答案 0 :(得分:2)

//Mark model.
public function student()
{
    return $this->belongsTo(
        Student::class,
        'registration_number' //Field name in the student_marks table
        'registration_number' //Field name in the students table
    );
}

//Student model
public function marks()
{
    return $this->hasMany(
        Mark::class,
        'registration_number', //Field name in the student_marks table
        'registration_number', //Field name in the students table
    );
}

有关关系定义的详细信息; https://laravel.com/api/5.4/Illuminate/Database/Eloquent/Concerns/HasRelationships.html

答案 1 :(得分:0)

    @foreach($marks as $mark)
                                                <tr class="item{{$mark->id}}">
                                                    <td>{{ App\Students_mark::find($mark->id)->marks_for('Name_of_Student') }}</td>
                                                    <td>{{$mark->regno}}</td>
                                                    <td>{{$mark->course_unit_id}}</td>
                                                    <td>{{$mark->term_id}}</td>
                                                    <td>{{$mark->c_w_marks}}</td>
                                                    <td>{{$mark->e_o_t_marks}}</td>
                                                    <td>
                                                        <button class="show-modal btn btn-sm btn-success" data-id="{{$mark->id}}" data-name="{{$mark->regno}}" data-abbrev="{{$mark->course_unit_id}}" data-level="{{$mark->term_id}}" data-lecturer="{{$mark->c_w_mrks}}">
                                                            <span class="glyphicon glyphicon-eye-open"></span> View</button>
                                                        <button class="edit-modal btn btn-sm btn-info" data-id="{{$mark->id}}" data-name="{{$mark->regno}}" data-abbrev="{{$mark->course_unit_id}}" data-level="{{$mark->term_id}}" data-lecturer="{{$mark->c_w_mrks}}">
                                                            <span class="glyphicon glyphicon-edit"></span> Edit</button>
                                                        <button class="delete_data btn btn-sm btn-danger" data-id="{{$mark->id}}" data-name="{{$mark->regno}}">
                                                            <span class="glyphicon glyphicon-trash"></span> Delete</button>
                                                    </td>
                                                </tr>
                                            @endforeach

我尝试过Mutas的人际关系代码,希望它能起作用,但是现在又遇到了另一个问题,我试图遍历学生标记,然后使用以下关系获取学生的姓名 学生报名模式

        public function marks(){
        return $this->hasMany(
            Students_mark::class,
            'regno',
            'RegNo'
        );
    }

学生成绩表

        public function marks_for(){
        return $this->belongsTo(
            StudentsReg::class,
            'regno',
            'RegNo'
        );
    }

希望您能理解我,我正在寻找一种更好的方法来解释这一点,但是我失败了!