【问题标题】:Join in laravel query builder and show output加入 laravel 查询生成器并显示输出
【发布时间】:2021-12-07 07:52:40
【问题描述】:

我尝试使用 laravel 查询生成器从数据库中获取数据并显示数据。但低于错误“Undefined variable $user_session_detail”。下面我给出我准备的所有代码。

//我的原始查询

SELECT ru.external_ref_no AS SID, usd.user_name AS Username, rs.servicecode AS Package, rc.clientdesc as Entity, rc.clientip as NAS_IP,
ROUND((ROUND((SUM(usd.FREE_UPLOAD_OCTETS)/1048576)))/1024,2) AS Upload,
ROUND((ROUND((SUM(usd.FREE_DOWNLOAD_OCTETS)/1048576)))/1024,2) AS Download,
ROUND((ROUND((SUM(usd.FREE_UPLOAD_OCTETS)/1048576)))/1024,2) + ROUND((ROUND((SUM(usd.FREE_DOWNLOAD_OCTETS)/1048576)))/1024,2) AS Total_Usage
FROM user_session_detail usd, radservice rs, radclient rc, radgroup rg, raduser ru 
WHERE ru.username=usd.user_name AND rs.serviceid=usd.service_id AND rg.groupid=usd.group_id 
AND usd.client_id=rc.clientid AND usd.SESSION_START_TIME > '2021-09-30 00.00.01' AND usd.SESSION_START_TIME < '2021-09-30 23.59.59'
GROUP BY usd.user_name
HAVING (ROUND((SUM(usd.FREE_UPLOAD_OCTETS)/1048576)))/1024 + (ROUND((SUM(usd.FREE_DOWNLOAD_OCTETS)/1048576)))/1024 > 15
AND (ROUND((SUM(usd.FREE_UPLOAD_OCTETS)/1048576)))/1024 + (ROUND((SUM(usd.FREE_DOWNLOAD_OCTETS)/1048576)))/1024 < 20;

//Laravel 查询构建器查询

public function nsuresecret(){
   $user_session_detail = DB::table('user_session_detail')

            ->select(array('user_session_detail.*'), DB::raw('raduser.external_ref_no AS SID, user_session_detail.user_name AS Username, radservice.servicecode AS Package,
             radclient.clientdesc as Entity, radclient.clientip as NAS_IP,
            ROUND((ROUND((SUM(user_session_detail.FREE_UPLOAD_OCTETS)/1048576)))/1024,2) AS Upload,
            ROUND((ROUND((SUM(user_session_detail.FREE_DOWNLOAD_OCTETS)/1048576)))/1024,2) AS Download,
            ROUND((ROUND((SUM(user_session_detail.FREE_UPLOAD_OCTETS)/1048576)))/1024,2) + ROUND((ROUND((SUM(user_session_detail.FREE_DOWNLOAD_OCTETS)/1048576)))/1024,2) AS Total_Usage'))
            ->join('radservice', 'user_session_detai.service_id', '=', 'radservice.serviceid')
            ->join('radclient', 'user_session_detail.client_id', '=', 'radclient.clientid')
            ->join('radgroup', 'user_session_detail.group_id', '=', 'radgroup.groupid')
            ->join('raduser', 'user_session_detail.user_name', '=', 'raduser.username')
            ->whereBetween('user_session_detail.SESSION_START_TIME', ['2021-09-30 00.00.01', '2021-09-30 23.59.59'])
            ->groupBy('user_session_detail.user_name')
            ->havingRaw((ROUND((SUM(user_session_detail.FREE_UPLOAD_OCTETS)/1048576)))/1024 + (ROUND((SUM(user_session_detail.FREE_DOWNLOAD_OCTETS)/1048576)))/1024 > 15
        AND (ROUND((SUM(user_session_detail.FREE_UPLOAD_OCTETS)/1048576)))/1024 + (ROUND((SUM(user_session_detail.FREE_DOWNLOAD_OCTETS)/1048576)))/1024 < 20)
            ->get();

        return view('reports.secretuserlist',compact('user_session_detail'));
    }

//刀片代码

<table class="table table table-bordered table-striped table-hover">
        <thead>
            <tr>
                <th>SID</th>
                <th>Username</th>
                <th>Package</th>
                <th>Entity</th>
                <th>NAS_IP</th>
                <th>Upload</th>
                <th>Download</th>
                <th>Total_Usage</th>
            </tr>
        </thead>
            <tbody>
            @foreach($user_session_detail as $usd)

                <tr>
                    <td>{{ $usd->SID }}</td>
                    <td>{{ $usd->UserName }}</td>
                    <td>{{ $usd->Package }}</td>
                    <td>{{ $usd->Entity }}</td>
                    <td>{{ $usd->NAS_IP }}</td>
                    <td>{{ $usd->Upload }}</td>
                    <td>{{ $usd->Download }}</td>
                    <td>{{ $usd->Total_Usage }}</td>

                </tr>

            @endforeach
            </tbody>
        </table>

【问题讨论】:

  • 您是否尝试将您的 $user_session_detail 变量重命名为 $userSessionDetail
  • 另外,当您在控制器中dd($user_session_detail) 时,它会显示预期的记录吗?
  • $userSessionDetail itry 与此但错误。你能用我的原始查询检查我的 laravel 查询生成器查询是对还是错?

标签: php mysql laravel


【解决方案1】:

以这种方式尝试。 dd($user_session_detail) 将数据从控制器传递给查看以供检查。

$user_session_detail = DB::table('user_session_detail')
            ->join('radservice', 'user_session_detai.service_id', '=', 'radservice.serviceid')
            ->join('radclient', 'user_session_detail.client_id', '=', 'radclient.clientid')
            ->join('radgroup', 'user_session_detail.group_id', '=', 'radgroup.groupid')
            ->join('raduser', 'user_session_detail.user_name', '=', 'raduser.username')
            ->whereBetween('user_session_detail.SESSION_START_TIME', ['2021-09-30 00.00.01', '2021-09-30 23.59.59'])
            ->groupBy('user_session_detail.user_name')
            ->select('user_session_detail.*', DB::raw('raduser.external_ref_no AS SID, user_session_detail.user_name AS Username, radservice.servicecode AS Package,
             radclient.clientdesc as Entity, radclient.clientip as NAS_IP,
            ROUND((ROUND((SUM(user_session_detail.FREE_UPLOAD_OCTETS)/1048576)))/1024,2) AS Upload,
            ROUND((ROUND((SUM(user_session_detail.FREE_DOWNLOAD_OCTETS)/1048576)))/1024,2) AS Download,
            ROUND((ROUND((SUM(user_session_detail.FREE_UPLOAD_OCTETS)/1048576)))/1024,2) + ROUND((ROUND((SUM(user_session_detail.FREE_DOWNLOAD_OCTETS)/1048576)))/1024,2) AS Total_Usage'))
            ->havingRaw((ROUND((SUM(user_session_detail.FREE_UPLOAD_OCTETS)/1048576)))/1024 + (ROUND((SUM(user_session_detail.FREE_DOWNLOAD_OCTETS)/1048576)))/1024 > 15
        AND (ROUND((SUM(user_session_detail.FREE_UPLOAD_OCTETS)/1048576)))/1024 + (ROUND((SUM(user_session_detail.FREE_DOWNLOAD_OCTETS)/1048576)))/1024 < 20)
            ->get();

【讨论】:

  • 调用未定义函数 App\Http\Controllers\SUM() 收到此错误。有什么解决办法吗?
【解决方案2】:

将您的 $users 变量更改为 $user_session_detail

【讨论】:

  • @Salman Zafar 进行了更改,但同样的错误。
【解决方案3】:

你应该检查compact('user_session_detail')是否有密钥user_session_detail

【讨论】:

    猜你喜欢
    • 2014-12-27
    • 2013-08-07
    • 1970-01-01
    • 2016-10-07
    • 2014-04-10
    • 2019-02-14
    • 2015-12-13
    • 2017-06-24
    • 1970-01-01
    相关资源
    最近更新 更多