比较两个不同表中的两个不同列,并从laravel 5.2中的任一表中显示其他列的数据

时间:2016-08-17 14:03:36

标签: php mysql 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);
}

这里我想将用户表的'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;视图...

3 个答案:

答案 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);
}
感谢大家的帮助。