比较两个不同表中的两个不同列,并显示另一列';s来自laravel 5.2中任一表的数据


Compare two different columns from two different tables and show other column's data from either table in laravel 5.2

将两个不同表中的两个不同列与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((中,将所需字段减为白色。

这里,labdetails2users是表名。

这段代码终于对我有用了:

public function showLabDetails(Request $request){
    $q = $request -> request -> all();
    $labdetails = Labdetails2::whereIn('lab_name', $q)->get();
    return View('showlabdetails')
            ->with('labdetails', $labdetails);
}

感谢所有帮助我的人。