2016-09-07 93 views
1

我有以下的laravel工作分頁Laravel加入與限制

$query = DB::table('clients') 
      ->leftJoin('radusergroup', 'clients.username', '=', 'radusergroup.username') 
      ->leftJoin('recharge', 'clients.username', '=', 'recharge.soldto'); 

我想從兩個表radusergroup和充電加入一些值。 radusergroup總是返回一行,因爲它只有一行存儲,而充值表返回多行。我只想從充值表中返回一行,這是最新的條目。

現在它從充值表中返回所有可能的行並在分頁視圖中顯示它。

+0

試試這個例子:http://stackoverflow.com/questions/28849719/sql-select-join-with-a-limit-in-laravel-php –

回答

1

這是Laravel Official documentation

DB::table('clinets') 
    ->leftJoin('radusergroup', 'clients.username', '=', 'radusergroup.username') 
    ->leftJoin('recharge', function ($leftJoin) { 
     $leftJoin->on('clients.username', '=', 'recharge.soldto') 
      ->where('recahrge.create_date', '=', DB::raw("(select max(`create_date`) from recahrge)")); 
    }) 
    ->get(); 

這種情況下,如果你在你的表有CREATE_DATE列,如果你還沒有它,我強烈建議創建一個列。

+0

我已經有充值表中的日期列'salesdate'。但是,運行您的查詢將返回以下錯誤。語法錯誤或訪問衝突:1064您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,在正常充值時選擇max('salesdate')附近使用正確的語法)?''在第1行(SQL:select * from'clients' left join'radusergroup' on'clients'.'username' ='radusergroup'.'username' left join'recharge' on'clients'.'username' ='recharge' .soldto'和'recharge'.'salesdate'(從充值中選擇最多('salesdate'))) –

+0

立即工作。它缺少'='in - >其中('recahrge.create_date',DB :: raw(「(從recahrge選擇max('create_date'))」)); –

+0

ok))我現在將編輯它 –