语法错误或访问冲突:1055“new.chart_of_accounts.name”不在 GROUP BY 中

Syntax error or access violation: 1055 'new.chart_of_accounts.name' isn't in GROUP BY

提问人:Imran Niaz 提问时间:4/29/2023 更新时间:4/29/2023 访问量:37

问:

'应用程序 / Http的 / 控制器 / 报告控制器 .php : 1616

当我打开链接时,它显示我这个错误

这是名为“TransactionController”的 PHP Laravel 控制器的完整代码。该控制器的目的是管理用户银行账户的交易。

“index”方法是控制器的主要方法,在用户访问交易页面时执行。该方法首先检查用户是否具有管理事务的权限。如果用户具有权限,则该方法将准备显示交易页面所需的数据。

该方法执行的第一件事是为交易页面设置默认过滤器。筛选器变量使用帐户和类别的“全部”值进行初始化。然后,该方法获取用户的所有银行帐户,并准备帐户持有人的下拉列表。它还在下拉列表中添加了“Stripe / PayPal”选项,用于与任何银行账户无关的交易。

接下来,该方法为交易准备类别。它获取用户的所有类别,并为事务准备类别的下拉列表。它还在下拉列表中添加了“账单”和“发票”选项。

准备好筛选器后,该方法会获取用户在给定时间范围内的所有交易和银行帐户。时间范围由用户指定,可以使用 start_month 和 end_month 查询参数进行设置。如果未设置这些参数,则默认时间范围设置为过去五个月。

然后,该方法会检查用户是否设置了任何帐户或类别过滤器。如果用户已选择帐户,则交易和帐户将按所选帐户进行筛选。如果用户已选择类别,则交易记录和帐户将按所选类别进行筛选。

最后,该方法返回包含必要数据(如交易、科目、类别和筛选器)的交易索引视图。

如果用户没有管理事务的权限,则该方法会将用户重定向到上一页,并显示错误消息。

            $end   = $request->end_date;

        }

        else

        {

            $start = date('Y-m-01');

            $end   = date('Y-m-t');

        }



        $journalItem = JournalItem::select('chart_of_accounts.name', \DB::raw('sum(credit) as totalCredit'), \DB::raw('sum(debit) as totalDebit'), \DB::raw('sum(credit) - sum(debit) as netAmount'));

        $journalItem->leftjoin('journal_entries', 'journal_entries.id', 'journal_items.journal');

        $journalItem->leftjoin('chart_of_accounts', 'journal_items.account', 'chart_of_accounts.id');

        $journalItem->where('chart_of_accounts.created_by',\Auth::user()->creatorId());

        $journalItem->where('journal_items.created_at', '>=', $start);

        $journalItem->where('journal_items.created_at', '<=', $end);

        $journalItem->groupBy('account');

        $journalItem = $journalItem->get()->toArray();



        $filter['startDateRange'] = $start;

        $filter['endDateRange']   = $end;



        return view('report.trial_balance', compact('filter', 'journalItem'));

    }

    else

    {

        return redirect()->back()->with('error', __('Permission Denied.'));

    }

}

public function leave(Request $request)

{`

SQLSTATE[42000]: Syntax error or access violation: 1055 'new.chart_of_accounts.name' isn't in GROUP BY (Connection: mysql, SQL: select chart_of_accountsnamejournal_itemsjournal_entriesjournal_entriesidjournal_itemsjournalchart_of_accountsjournal_itemsaccountchart_of_accountsidchart_of_accountscreated_byjournal_itemscreated_atjournal_itemscreated_ataccount')., sum(credit) as totalCredit, sum(debit) as totalDebit, sum(credit) - sum(debit) as netAmount from left joinon.=.left joinon.=.where.= 2 and.>= 2023-04-01 and.<= 2023-04-30 group by

`

尝试解决此问题

PHP SQL 拉维尔

评论


答:

0赞 nbk 4/29/2023 #1

而不是

$journalItem->groupBy('account');

 $journalItem->groupBy('chart_of_accounts.name');

所有列都位于 th group by 中或具有来自 nction 的聚合,因此当您按帐户分组时,它需要在 select 和 name 中需要聚合函数,或者您使用 name 进行分组 by