Laravel 拉威尔:如何获得多个记录

Laravel 拉威尔:如何获得多个记录,laravel,laravel-4,eloquent,declaration,Laravel,Laravel 4,Eloquent,Declaration,我想在subject表中有多条记录,但它始终只获取sections表的最后一条记录 我将根据所选的下拉框(部分)提取记录,并在该下拉框中提取该表中的内容 这是我的控制器 public function subjectCreate(){ $users1 = []; $sections = []; $users1 = User::where('isTeacher', '1')->where('isAdmin', '0')->lists('firstname','i

我想在subject表中有多条记录,但它始终只获取sections表的最后一条记录

我将根据所选的下拉框(部分)提取记录,并在该下拉框中提取该表中的内容

这是我的控制器

public function subjectCreate(){
    $users1 = [];
    $sections = [];
    $users1 = User::where('isTeacher', '1')->where('isAdmin', '0')->lists('firstname','id');
    $sections = Section1::lists('name','name');
    return View::make('teacher.create_subject', compact('users1','sections')
    );
}

public function subjectStore(){
    $validate = Validator::make(Input::all(), array(
        'name' => 'required|unique:subject'
        ));
    if ($validate->fails()){
        return Redirect::route('subjectCreate')->withErrors($validate)->withInput();
    } else {
        foreach(Section1::where('name', '=',  Input::get('section_name'))->get() as $section)
        foreach(User::where('id', '=', Input::get('teacher_id'))->get() as $teacher)
        $teacher_id = Input::get('teacher_id');
        $subject = new Subject1();
        $subject->name = Input::get('name');
        $subject->student_id = $section->student_id;   
        $subject->student_firstname = $section->student_firstname;  
        $subject->student_lastname = $section->student_lastname;   
        $subject->teacher_id = $teacher_id;
        $subject->teacher_firstname = $teacher->firstname;  
        $subject->teacher_lastname = $teacher->lastname;
        $subject->section_id = $section->id;
        $subject->section_name = $section->name;
        $subject->save();
    }
    return Redirect::route('viewSubject')->with('success', 'SUBJECT HAS BEEN RECORDED!');
}
以下是我的下拉列表

<div class="form-group">
    {{ Form::label('teacher_name', 'Assign a Teacher to this subject:') }}
    {{ Form::select('teacher_id', $users1, null) }}
</div>
<div class="form-group">
    {{ Form::label('section_name', 'Assign a Section to this subject:') }}
    {{ Form::select('section_name', $sections, null) }}
</div>

{{Form::label('teacher_name','Assign a teacher to this subject:')}
{{Form::select('teacher_id',$users1,null)}
{{Form::label('section_name','Assign a section to this subject:')}
{{Form::select('section_name',$sections,null)}

看起来您缺少内部
foreach
上的花括号

你的代码在这里

foreach(User::where('id', '=', Input::get('teacher_id'))->get() as $teacher)
$teacher_id = Input::get('teacher_id');
$subject = new Subject1();
...
与下面的代码段等效。因此,每个部分仅保存1个主题

foreach(User::where('id', '=', Input::get('teacher_id'))->get() as $teacher) {
    $teacher_id = Input::get('teacher_id');
}
$subject = new Subject1();
...
下面是应该放在
else
块中的代码

foreach(Section1::where('name', '=',  Input::get('section_name'))->get() as $section) {
    foreach(User::where('id', '=', Input::get('teacher_id'))->get() as $teacher) {
        $teacher_id = Input::get('teacher_id');
        $subject = new Subject1();
        $subject->name = Input::get('name');
        $subject->student_id = $section->student_id;   
        $subject->student_firstname = $section->student_firstname;  
        $subject->student_lastname = $section->student_lastname;   
        $subject->teacher_id = $teacher_id;
        $subject->teacher_firstname = $teacher->firstname;  
        $subject->teacher_lastname = $teacher->lastname;
        $subject->section_id = $section->id;
        $subject->section_name = $section->name;
        $subject->save();
    }
}

需要注意的是:在将
$users1
传递到视图之前,不需要将它们定义为数组,这似乎是多余的。你在用那些
foreach()
循环做什么?这也是拉威尔4号还是5号?你有两个标签,但它们不一样……我使用的是laravel 4,在foreach循环中,它得到的数据与分区表中的学生一样具有这种条件,它仍然只得到一条记录:(,但是它得到了该分区中学生的第一列:)你是怎么得到的?