Laravel-加入3张桌子

时间:2018-08-05 17:18:57

标签: php mysql laravel

我有3张桌子:用户,访问次数,验血次数

表格如下:

用户: ID

访问次数: id,user_id

血统测试:id,visit_id

我需要为当前用户“ SELECT * FROM bloodtests”

我尝试过这种方式:

$item = User::findOrFail($id);   //get ID of current user

$bt = DB::table('bloodtests')
    ->join('visits', 'bloodtests.visit_id', '=' ,'visits.id')
    ->join('users', 'visits.user_id', '=' ,'users.id')
    ->select(
        'bloodtests.id',  
        'bloodtests.visit_id')
    ->where('users.id', $item)
    ->get();

但这不起作用。

我们将不胜感激:)

3 个答案:

答案 0 :(得分:2)

您将通过此方式将所有用户数据作为集合

 $item = User::findOrFail($id);

您只需要通过\Auth::id()提供当前用户的ID或直接使用$id而不是$item

$bt = DB::table('bloodtests')
    ->join('visits', 'bloodtests.visit_id', '=' ,'visits.id')
    ->join('users', 'visits.user_id', '=' ,'users.id')
    ->select(
        'bloodtests.id',  
        'bloodtests.visit_id')
    ->where('users.id', \Auth::id())
    ->get();

或直接使用$id

->where('users.id', $id)

答案 1 :(得分:0)

尝试一下:

$item = User::findOrFail($id);

$bt = DB::table('bloodtests')
    ->join('visits', 'bloodtests.visit_id', '=' ,'visits.id')
    ->join('users', 'visits.user_id', '=' ,'users.id')
    ->select(
        'bloodtests.id',  
        'bloodtests.visit_id')
    ->where('users.id', $item->id)
    ->get();

答案 2 :(得分:0)

$item = User::findOrFail($id);   //get ID of current user

$bt = DB::table('bloodtests')
    ->join('visits', 'bloodtests.visit_id', '=' ,'visits.id')
    ->join('users', 'visits.user_id', '=' ,'users.id')
    ->select(
        'bloodtests.id',  
        'bloodtests.visit_id')
    ->where('users.id', $id)
    ->get();