如何在Laravel中联接两个表

时间:2019-12-22 20:33:12

标签: php laravel join

我正试图联接两个不同的表以在我的index.blade文件的foreach循环中显示

我的控制器:

public function index()
    {
        $users = DB::table('accounts')
            ->join('users', 'accounts.user_id', '=', 'users.id')
            ->select('users.accno', 'accounts.*')
            ->first();

        return view('accounts.index', compact('users'));
    }

我的刀片:

 @foreach($users as $user)
       <tr>
          <td>{{ $user->accno }}</td>
          <td>{{ $user->balance }}</td>
          <td>{{ $user->amt }}</td>
       </tr>
 @endforeach

我在其中实施控制器的index.blade.php,{{user->accno}}来自我的用户表,其余来自帐户表

1 个答案:

答案 0 :(得分:1)

 $users = DB::table('accounts')
        ->join('users', 'accounts.user_id', '=', 'users.id')
        ->select('users.accno', 'accounts.*')
        ->first();

在您的控制器中,您正在使用first()。因此需要使用foreach。只需写:

   <tr>
      <td>{{ $user->accno }}</td>
      <td>{{ $user->balance }}</td>
      <td>{{ $user->amt }}</td>
   </tr>

或者您应该使用get()而不是first()。但这取决于您的数据,如果您只想返回一个数据,则应使用first()。如果要返回大量数据,则应使用get()。 控制器:

$users = DB::table('accounts')
            ->join('users', 'accounts.user_id', '=', 'users.id')
            ->select('users.accno', 'accounts.*')
            ->get();

刀片:

@foreach($users as $user)
       <tr>
          <td>{{ $user->accno }}</td>
          <td>{{ $user->balance }}</td>
          <td>{{ $user->amt }}</td>
       </tr>
 @endforeach