使用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);
}
这里我想将用户表的'lab_name'列与labdetails2表的'lab_name'列匹配,如果匹配则只显示labdetails表中的相关数据。
N.B。我正在使用旧数据库,其中表之间没有任何关系。
观点如:
<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
请帮助我如何处理控制器&amp;视图...
答案 0 :(得分:0)
您只能以这种方式检索匹配记录
$users = DB::table('users')->lists('lab_name'); // this retrieves all lab_name as array.
然后,仅检索匹配labdetails
$labdetails = Labdetails2::whereIn('lab_name',$users)->paginate(20);
答案 1 :(得分:0)
DB::table('users')
->join('labdetails2', 'users.lab_name', '=', 'labdetails2.lab_name')
->select('labdetails2.lab_name', 'labdetails2.pc_name')
->get()
在select()中,将您需要的字段放下白色。
此处, labdetails2 和用户是表名。
答案 2 :(得分:0)
这段代码终于为我效劳了:
public function showLabDetails(Request $request){
$q = $request -> request -> all();
$labdetails = Labdetails2::whereIn('lab_name', $q)->get();
return View('showlabdetails')
->with('labdetails', $labdetails);
}
感谢大家的帮助。