Laravel加入与限制

问题描述:

我有以下的laravel工作分页Laravel加入与限制

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

我想从两个表radusergroup和充电加入一些值。 radusergroup总是返回一行,因为它只有一行存储,而充值表返回多行。我只想从充值表中返回一行,这是最新的条目。

现在它从充值表中返回所有可能的行并在分页视图中显示它。

+0

试试这个例子:http://*.com/questions/28849719/sql-select-join-with-a-limit-in-laravel-php –

这是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))我现在将编辑它 –