【问题标题】:Getting information from one table and saving the returned information in new table - Laravel 5.2从一个表中获取信息并将返回的信息保存在新表中 - Laravel 5.2
【发布时间】:2016-02-25 06:00:56
【问题描述】:

我正在为我的学校制作一个学校系统,但我遇到了这个问题,我被困了好几天。在我的应用程序中,我的用户类型为 adminteacherstudent。管理员创建所有用户和所有其他信息。现在我正在制作教师面板,教师可以在其中为学生添加分数,稍后它们将显示在学生面板中。

因此,首先,当老师进入他们的帐户时,他将能够选择他教授的课程和他教授的科目,对于这种情况,我有表格 - class_subjects,我将在其中保存 @来自管理面板的 987654325@、subject_idclass_id。我在这里,在我的教师面板中调用它,它似乎工作得很好,因为我看到了我需要的确切课程和科目。之后,我需要对这些都从老师那里挑选出来进行帖子查询,作为回报,让所有学生从挑选的班级+挑选的科目中获得,这也完全符合我的要求。所以我返回的是一个新刀片,其中包含来自表class_subject 的信息的数组,教师需要从这个返回的数组中选择信息,并且在文本字段中他必须为他选择的学生添加他的标记。之后,我需要将选择的信息保存在名为 student_marks 的新表中,其中字段为 student_idsubject_idmark_type_idmark

我的问题是如何将这些信息(老师选择的)保存在新表(student_marks)中?

我正在发布控制器:

class AccountController extends Controller
{
    public function getIndex() {

        $user = Auth::user();
        $classStudent = ClassSubject::where('teacher_id','=',$user->id)->get()->lists('class_id');
        $userSubject = ClassSubject::where('teacher_id','=',$user->id)->get()->lists('subject_id');

        return view('educator.account.account',[
            'user' => $user,
            'userTeacher'=> $classStudent,
            'userSubject'=> $userSubject,
        ]);
    }

    public function postIndex(Request $request) {
       ClassSubject::where(
            'subject_id','=',$request->get('userSubject'),
            'class_id','=',$request->get('userClass')
        );

        $user = Auth::user();
        $markType = MarkType::lists('type');
        $sub = Subject::where('id','=',$request->get('userSubject'))->get()->lists('name');
        $stu =  User::where('class_id','=',$request->get('userClass'))
            ->orderBy('first_name', 'asc')->get()->lists('full_name');

        return view('educator.account.input', [
            'user' => $user,
            'studentss'=> $stu,
            'markType' => $markType ,
            'sub'=> $sub,

    }

我知道这有点扭曲,但我真的被困在这里,如果有人能最终帮助我,我将非常感激。如果有不清楚的地方,请询问。

eductor.account.account(第一个刀片)

@extends('teacher-app')
@section('teacher-content')
    <div class="col-md-6">
    {!! Form::open(['method' => 'post', 'class' => 'form-horizontal']) !!}
        <div class="form-group">
            {!! Form::label('profile_id','Избери клас:', ['class' => 'control-label col-md-4']) !!}
            <div class="col-md-3">
                {!! Form::select('userClass', $userTeacher, null, ['class'=>'form-control']) !!}
            </div>
        </div>
        <br>
        <div class="form-group">
            {!! Form::label('profile_id','Избери предмет:', ['class' => 'control-label col-md-4']) !!}
            <div class="col-md-3">
                {!! Form::select('userSubject', $userSubject, null, ['class'=>'form-control']) !!}
            </div>
        </div>

        <div align="center">

            {!! Form::submit('Избери', ['class' => 'btn btn-default']) !!}
        </div>
        {!! Form::close() !!}



            @stop
    </div>

eductor.account.input(第二个刀片)

@extends('teacher-app')
@section('teacher-content')
    <div class="col-md-8">



        {!! Form::open(['method' => 'post', 'class' => 'form-horizontal']) !!}
        <div class="form-group">
            {!! Form::label('profile_id','Ученик:', ['class' => 'control-label col-md-4']) !!}
            <div class="col-md-3">
                {!! Form::select('userStu', $studentss, null, ['class'=>'form-control']) !!}
            </div>

        </div>
        <div class="form-group">

            {!! Form::label('profile_id','Оценка:', ['class' => 'control-label col-md-4']) !!}

            <div class="col-md-2">
                {!! Form::text('mark',null, ['class'=>'form-control']) !!}
            </div>
        </div>

        <div class="form-group">
            {!! Form::label('profile_id','Тип оценка:', ['class' => 'control-label col-md-4']) !!}
            <div class="col-md-3">
                {!! Form::select('markType', $markType, null, ['class'=>'form-control']) !!}
            </div>

        </div>

        <div class="form-group">
            {!! Form::label('profile_id','Предмет:', ['class' => 'control-label col-md-4']) !!}
            <div class="col-md-3">
                {!! Form::select('stuSub', $sub, null, ['class'=>'form-control']) !!}
            </div>

        </div>

        <br>


        <div align="center">
            <a href="{{url('educator/account')}}"><button type="button" class="btn btn-default">Назад</button></a>
            {!! Form::submit('Запиши', ['class' => 'btn btn-default']) !!}

        </div>
        {!! Form::close() !!}


        </div>


        @stop

【问题讨论】:

  • 为什么不创建一个特定于这些更新的 html 表单呢?第一个问题是:你是如何将这些数据提交给服务器的?阿贾克斯?如果它只是一个标准帖子,请将表单提交到具有与您的表匹配的数据结构的正确路由,您几乎可以直接插入(重复更新)条目。然后重定向回来并加载新数据。这有意义吗?
  • 你们有学生成绩模型吗?或者你如何定义关系?
  • 是的,每张桌子我都有模型。 @Emn1ty 我没有使用 Ajax,一个标准的帖子,但我不知道你告诉我该怎么做......这是我的第一个 Laravel 项目,我是新手。
  • 如果有帮助,我可以发布两个刀片...
  • 至少看看表单结构会有所帮助,是的。

标签: php mysql database laravel


【解决方案1】:

当他们提交学生评分表格时,您将有一个类似于此的路线发布到:

class AccountController extends Controller {

    public function markStudent(Request $request)
    {
        // get request data
        $mark = $request->input('mark');
        $subject_id = $request->input('stuSub');
        $mark_type = $request->input('markType');
        $student_id = $request->input('userStu');

        // get the existing record or create a new, empty record
        $student_mark = StudentMark::firstOrNew(compact('student_id', 'subject_id'));

        // add the updated data to the model
        $student_mark->fill(compact('mark_type', 'mark'));

        // persist to database
        $student_mark->save();

        // redirect or do whatever you want after request completion...
    }
}

上面的代码假设您只希望每个学生、每个科目都有一个条目(即这两列上的唯一索引)。

我还建议您在插入数据之前验证数据,方法是在StudentMark::firstOrNew() 之前或creating a custom request object with validation 之前这样做。

【讨论】:

  • 我得到了第一个 $mark 未使用的局部变量
  • 已更新,应该更正,但您可能需要修改此代码以匹配您自己的代码,因为我没有能力对其进行测试。
  • 是的。但是在提交时,提交按钮看起来像是在监听之前的 postIndex 方法并弄乱了我所有的数据......
  • 您必须手动设置发布路线,它默认为当前页面。 laravel.com/docs/4.2/html
  • 我该怎么做?这是我的路线:Route::group(['middleware' =&gt; ['auth'] ], function () { Route::group([ 'prefix' =&gt; 'educator', 'namespace' =&gt; 'Educator' ], function () { Route::controller('account', 'AccountController'); }); });
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-17
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
  • 2017-04-29
  • 1970-01-01
相关资源
最近更新 更多