将两个不同表中的两个不同列与if语句进行比较,并在laravel 5.2 中显示任一表中其他列的数据
类似控制器:
public function labDetails(){
$users = DB::table('users')->lists('lab_name');
$labdetails = Labdetails2::paginate(20);
return View('labdetails')
->with('users', $users)
->with('labdetails', $labdetails);
}
在这里,我想将users表的lab_name列与labdetails2表的labname列匹配,如果匹配,则只显示labdetails表中的相关数据。
注意。我使用的是一个旧数据库,其中表之间没有关系。
视图,如:
<form action="" method="">
<select name="state" onchange="getValue(this)">
<option value="">Select Lab</option>
@foreach ($users as $key => $user)
<option value="{{ $user }}">{{ $user }}</option>
@endforeach
</select>
<input type="submit" value="Submit">
@foreach ($labdetails as $labdetail)
<tbody>
<tr>
<td>{{ $labdetail->sl }}</td>
<td>{{ $labdetail->lab_name }}</td>
<td>{{ $labdetail->pc_name }}</td>
<td>{{ $labdetail->pc_ip }}</td>
<td>{{ $labdetail->mac1 }}</td>
<td>{{ $labdetail->assetno }}</td>
<td>{{ $labdetail->pc_type }}</td>
<td>{{ $labdetail->processor }}</td>
<td>{{ $labdetail->motherboard }}</td>
<td>{{ $labdetail->ram }}</td>
<td>{{ $labdetail->hdd }}</td>
<td>{{ $labdetail->location }}</td>
<td>{{ $labdetail->department }}</td>
<td>{{ $labdetail->entrydate }}</td>
<td>{{ $labdetail->comment }}</td>
</tr>
</tbody>
@endforeach
请帮我怎么处理控制器&视图。。。
您只能通过这种方式检索匹配记录
$users = DB::table('users')->lists('lab_name'); // this retrieves all lab_name as array.
然后,只检索匹配的labdetails
$labdetails = Labdetails2::whereIn('lab_name',$users)->paginate(20);
DB::table('users')
->join('labdetails2', 'users.lab_name', '=', 'labdetails2.lab_name')
->select('labdetails2.lab_name', 'labdetails2.pc_name')
->get()
在select((中,将所需字段减为白色。
这里,labdetails2和users是表名。
这段代码终于对我有用了:
public function showLabDetails(Request $request){
$q = $request -> request -> all();
$labdetails = Labdetails2::whereIn('lab_name', $q)->get();
return View('showlabdetails')
->with('labdetails', $labdetails);
}
感谢所有帮助我的人。