【问题标题】:Laravel join with limitLaravel 加入限制
【发布时间】:2018-06-29 04:01:29
【问题描述】:

我有以下为 laravel 分页工作

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

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

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

【问题讨论】:

标签: laravel eloquent


【解决方案1】:

这是Laravel Official documentation

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

如果您的表中有 create_date 列,就会出现这种情况,如果您还没有,我强烈建议您创建该列。

【讨论】:

  • 我已经在充值表中有名为“salesdate”的日期列。但是,运行您的查询会返回以下错误。语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在 'select max(salesdate) fromcharging) 附近使用的正确语法?在第 1 行 (SQL: select * from clients left join radusergroup on clients.username = radusergroup.username left join recharge on clients.username = @987654 .soldtorecharge.salesdate(从充值中选择最大值(salesdate))
  • 现在工作。它在 ->where('recahrge.create_date', DB::raw("(select max(create_date) from recahrge)")) 中缺少 '=';
猜你喜欢
  • 2016-02-09
  • 1970-01-01
  • 2019-04-29
  • 1970-01-01
  • 2016-01-17
  • 2022-06-14
  • 2015-09-16
  • 2015-06-11
  • 1970-01-01
相关资源
最近更新 更多