Php Laravel:从不同的表中选择选项
最近几天我在学习laravel,我想知道我是否可以在一个select标签上做一个foreach,从一个特定的表中获取记录 在我的控制器中,基本上是一个验证,如果记录存在,它会返回记录Php Laravel:从不同的表中选择选项,php,laravel,Php,Laravel,最近几天我在学习laravel,我想知道我是否可以在一个select标签上做一个foreach,从一个特定的表中获取记录 在我的控制器中,基本上是一个验证,如果记录存在,它会返回记录 public function create(Request $request) { // $cpf = $request->input('cpf'); $cooperado = \DB::table('cooperados') // query
public function create(Request $request)
{
//
$cpf = $request->input('cpf');
$cooperado = \DB::table('cooperados') // query builder, busca o registro de acordo com cpf
->select('id', 'nome', 'cpf')
->where('cpf', '=', $cpf)
->first();
//$cooperado = Cooperados::find($id);
//return view('cadastro.create', compact('cooperado'));
if(count($cooperado) == 0){
return redirect('validar')->with('success', 'CPF incorreto ou não registrado');
//return view('cadastro.create', compact('cooperado'));
} else {
//return redirect('validar')->with('success', 'CPF incorreto ou não registrado');
return view('cadastro.create', compact('cooperado'));
}
}
这就是我的create视图的样子
<form action="{{ route('cadastro.store') }}" method="POST">
@csrf
<div class="row">
<div class="col">
<label for="cooperado">Cooperado</label>
<input type="text" class="form-control" value="{{ $cooperado->nome }}" readonly>
</div>
<div class="col">
<label for="cpf">CPF</label>
<input type="text" class="form-control" value="{{ $cooperado->cpf }}" readonly>
</div>
</div>
<div class="form-group">
<label for="dependente">Dependente</label>
<input type="text" class="form-control" id="dependente" placeholder="Nome do estudante">
</div>
<div class="form-group">
<label for="extracurricular">Extracurricular</label>
<select class="form-control" id="extracurricular">
<option>Futsal</option>
<option>Volei</option>
<option>Futebol</option>
<option>Internet</option>
<option>Radio</option>
</select>
</div>
<div class="form-group">
<label for="dependente">Série</label>
<input type="text" class="form-control" id="dependente" placeholder="Exemplo: 3 Serie D">
</div>
<div class="form-group">
<button type="submit" class="btn btn-success">
Cadastrar
</button>
</div>
</form>
@csrf
合作社
中央公积金
眷属
课外的
五人制
沃莱
足球
互联网
无线电
塞里
地籍
正如您所看到的,我的表单上有一个select标记,我想使用foreach从另一个表中选择记录,我知道在我的视图中进行查询并不酷,那么我该怎么做呢?(此表单类似于学生注册,选择标签位于学生选择其课程的位置)这很常见,您是对的;不要向视图中添加查询逻辑。因为控制器正在返回该视图,所以在控制器中执行查询并将其传递给视图。假设您有一个表
courses
,其中包含“五人制”、“排球”等的记录。按如下方式调整控制器:
$cpf = $request->input('cpf');
$cooperado = \DB::table('cooperados')
->select('id', 'nome', 'cpf')
->where('cpf', '=', $cpf)
->first();
$courses = Course::orderBy('name')->get();
// Note: use DB::table('courses') if you don't have a `Course` model, but models are preferred
return view('cadastro.create', compact('cooperado', 'courses'));
然后,在您看来,对$courses
的值使用foreach
:
<select class="form-control" id="extracurricular" name="course">
@foreach($courses AS $course)
<option value="{{ $course->id }}">{{ $course->name }}</option>
@endforeach
</select>
@foreach($课程作为$课程)
{{$course->name}
@endforeach
如果操作正确,您的
中应该有多个
元素与数据库中的课程相匹配
注意:将
name=“course”
添加到您的
,可以通过$request->input(“course”)
在处理POST
请求的控制器中检索值,并将是所选课程的id
。谢谢,解释得很好,这使我对laravel有了更好的了解