【问题标题】:Compare two different columns from two different tables and show other column's data from either table in laravel 5.2比较两个不同表中的两个不同列,并在 laravel 5.2 中显示任一表中其他列的数据
【发布时间】:2016-08-17 14:03:36
【问题描述】:

使用 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 表的 'lab_name' 列匹配,如果它们匹配,则仅显示来自 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

请帮助我如何处理控制器和视图...

【问题讨论】:

    标签: php mysql laravel-5.2


    【解决方案1】:

    这种方式只能检索匹配记录

    $users = DB::table('users')->lists('lab_name'); // this retrieves all lab_name as array.
    

    然后,只检索匹配项labdetails

    $labdetails = Labdetails2::whereIn('lab_name',$users)->paginate(20);
    

    【讨论】:

    • 非常感谢, whereIn() 在请求选择选项后实际上为我工作。但是 paginate() 提供了一些 RouteCollection->methodNotAllowed(array('POST')) 错误,尽管 get() 工作得很好。
    【解决方案2】:
    DB::table('users')
                ->join('labdetails2', 'users.lab_name', '=', 'labdetails2.lab_name')
    ->select('labdetails2.lab_name', 'labdetails2.pc_name')
    ->get()
    

    在 select() 中,将您需要的字段变白。

    这里,labdetails2users 是表名。

    【讨论】:

    • 谢谢,到目前为止,我已经设法通过这个过程获取了所有数据,但我也想在提交后匹配数据。我的目标是提交“users.lab_name”时,它将显示“labdetails2.lab_name”中的所有匹配数据。例如,当 'users.lab205' = 'labdetails2.lab205' 时,它将显示 'labdetails2.lab205' 的所有数据。还需要一些关于视图的帮助。
    【解决方案3】:

    这段代码终于为我工作了:

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

    感谢大家帮助我。

    【讨论】:

      猜你喜欢
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-23
      • 2021-08-27
      相关资源
      最近更新 更多