时间戳转换器

Laravel 8 和 Livewire - 查询不起作用

日期:2023-05-09     浏览:280    
【中文标题】Laravel 8 和 Livewire - 查询不起作用【英文标题】:Laravel 8 & Livewire - query not works 【发布时间】:2021-04-14 10:12:19 【问题描述】:

我正在使用 Laravel 8 和 Livewire 制作应用程序。 在我的reportResidui.blade.php 视图中,我集成了一个名为report-residui-header-filter 的livewire 组件,我用它来过滤(这个组件工作正常)。 当我执行查询时出现问题,我需要从一个表中过滤,以便使用 where 子句 where('importoResiduo', '>', '0') 对字段 anagrafica_soggetto.codiceFiscale 的数据进行分组。 但是当我运行查询时,我收到以下错误,我不明白它来自什么,因为删除 groupBy 子句有效。

有人有什么建议或意见吗?

错误:

SQLSTATE[42000]: Syntax error or access violation:
1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'tenantseed_prova_province.anagrafica_soggetto.denominazioneSoggetto'
which is not functionally dependent on columns in GROUP BY clause; 
this is incompatible with sql_mode=only_full_group_by (SQL: select distinct `denominazioneSoggetto`, `anagrafica_soggetto`.`codiceFiscale`, `indirizzoPOSTA`, `importoCarico` as `carico`,
`importoResiduo` as `residuo`, `pagatoNormale` as `riscosso`, `pagatoDiscarico` as `sgravio` from `anagrafica_soggetto` inner join `minuta_partita` on `minuta_partita`.`id_soggetto` = `anagrafica_soggetto`.`id` left outer join `users` on `minuta_partita`.`id_user` = `users`.`id` left outer join `partita_pagamenti` on `partita_pagamenti`.`id_minuta_partita` =
`minuta_partita`.`id` inner join `tipologia_imposta` on `minuta_partita`.`id_tipologia_imposta`
= `tipologia_imposta`.`id` where `importoResiduo` > 0 group by
`anagrafica_soggetto`.`codiceFiscale`)

带查询的 Livewire 组件:

<?php

namespace App\Http\Livewire;

use Livewire\Component;
use Illuminate\Http\Request;
use App\Models\MinutaPartita;
use App\Models\AnagraficaSoggetto;
use App\Models\TipologiaImposta;
use Illuminate\Support\Facades\DB;
use Livewire\WithPagination;
use App\Tenant;

class ReportResiduiHeaderFilter extends Component

    protected $paginationTheme = 'bootstrap';

    protected $connection = null;
    public $first_render = true;
    public $filtered = null;

    // Definiamo l'array dei filtri, e filtriamo se vogliamo raggruppare i filtri per CF del soggetto
    public $filter = [
        'group' => '' //indichiamo se raggruppare o meno (vuoto non si raggruppa, 1 si raggruppa per CF)
    ];

    public function mount(Request $request)
        
        if (null !== $request->get('throughMiddleware')) 
            $this->connection = 'tenant';
         else 
            $this->connection = null;
        

    

    public function filtri()

        if (null !== request()->get('throughMiddleware')) 
            $this->connection = 'tenant';
         else 
            $this->connection = null;
        

        $anagrafica = new AnagraficaSoggetto();
        $anagrafica->setConnection($this->connection);

        $pratiche = $anagrafica->select(
            'denominazioneSoggetto',
            'anagrafica_soggetto.codiceFiscale',
            'indirizzoPOSTA',
            'importoCarico as carico',
            'importoResiduo as residuo',
            'pagatoNormale as riscosso',
            'pagatoDiscarico as sgravio',
        )->distinct()
            ->join('minuta_partita', 'minuta_partita.id_soggetto', '=', 'anagrafica_soggetto.id')
            ->join('users', 'minuta_partita.id_user', '=', 'users.id', 'left outer')
            ->join('partita_pagamenti', 'partita_pagamenti.id_minuta_partita', '=', 'minuta_partita.id', 'left outer')
            ->join('tipologia_imposta', 'minuta_partita.id_tipologia_imposta', '=', 'tipologia_imposta.id');
        
        // recupero solo le pratiche che hanno residui non nulli
        $pratiche = $pratiche->where('importoResiduo', '>', 0);

        // if i remove this and i get the value by where clause it woks
        if ($this->filter['group'] != '') 
            $pratiche = $pratiche->groupBy('anagrafica_soggetto.codiceFiscale')->get();
        

        dd($pratiche);
    
    

    public function render()
    
        return view('livewire.report-residui-header-filter');
    


【问题讨论】:

【参考方案1】:

您正在尝试按anagrafica_soggetto.codiceFiscale 进行分组,但您的查询中有许多联接,因此您必须明确告诉 MySQL 如何对选择列表中的其他选定项进行分组。

解决方案是按您要加入的每个表中的至少 1 个字段进行分组。

【讨论】:

相关文章

Laravel Livewire 电线:单击创建无限循环

{】LaravelLivewire电线:单击创建无限循环【英文标题】:LaravelLivewirewire:clickcreatesinfiniteloop【发布时间】:2021-02-2004:52:31【问题描述】:我有一个Livewire组件,它是一个产品过滤器。查询都可以正常工作,但有时会创建无限循环的...}

使用 Laravel Livewire 和 Laravel Fortify 进行登录

{】使用LaravelLivewire和LaravelFortify进行登录【英文标题】:UseLaravelLivewirewithLaravelFortifyforLogin【发布时间】:2021-02-1913:10:48【问题描述】:我想使用LaravelFortify和Livewire创建一个非常简单的登录表单。我不想使用Jetstream,因为它有更...}

Laravel 和 Livewire:组件更改时如何执行 javascript 函数?

{】Laravel和Livewire:组件更改时如何执行javascript函数?【英文标题】:Laravel&Livewire:Howtoexecuteajavascriptfunctionwhenthecomponentchanges?【发布时间】:2021-12-1301:26:02【问题描述】:我正在使用Laravel8和Livewire。我有一个应用程序显示表中...}

Laravel Livewire,两个 livewire 组件之间的通信

{】LaravelLivewire,两个livewire组件之间的通信【英文标题】:LaravelLivewire,communicationbetweentwolivewirecomponents【发布时间】:2020-08-0309:38:20【问题描述】:我有2个livewire组件,第一个只显示购物车的会话变量,第二个只是在购物车中添...}

对 Laravel Livewire 组件进行水合和脱水意味着啥?

{】对LaravelLivewire组件进行水合和脱水意味着啥?【英文标题】:WhatdoesitmeantohydrateanddehydrateaLaravelLivewirecomponent?对LaravelLivewire组件进行水合和脱水意味着什么?【发布时间】:2021-04-0613:18:16【问题描述】:有人能指出适用于Livewire...}

Laravel-livewire:为啥触发事件会执行 render() 方法?

{】Laravel-livewire:为啥触发事件会执行render()方法?【英文标题】:Laravel-livewire:Whydoesfiringaneventexecutetherender()method?Laravel-livewire:为什么触发事件会执行render()方法?【发布时间】:2020-12-0113:15:55【问题描述】:这是Laravel的Livewire...}

在 Laravel Livewire 中将值从一个页面传递到另一个页面

{】在LaravelLivewire中将值从一个页面传递到另一个页面【英文标题】:PassingavaluefromonepagetoanotherinLaravelLivewire【发布时间】:2021-06-0803:58:27【问题描述】:我是LivewireLaravel的新手,我有一个关于如何将值从一个页面传递到另一个页...}

Laravel Livewire 组件偏移

{】LaravelLivewire组件偏移【英文标题】:LaravelLivewirecomponentoffset【发布时间】:2020-06-1618:10:50【问题描述】:我正在尝试通过在Livewirecomponent内部调用的laravel控制器获取一些技术人员数据。在某些情况下,控制器会返回null,因为...}

Laravel livewire:用作 laravel 控制器

{】Laravellivewire:用作laravel控制器【英文标题】:Laravellivewire:useasalaravelcontroller【发布时间】:2021-09-2601:52:57【问题描述】:我在我的应用中使用来进行即时搜索。事实上,我展示了该机构及其文件,这些文件显示在我的controllers...}

Laravel Livewire 绑定模型 Carbon 属性

{】LaravelLivewire绑定模型Carbon属性【英文标题】:LaravelLivewirebindmodelCarbonattribute【发布时间】:2021-01-1119:07:07【问题描述】:我正在使用LaravelLivewirev2,我需要将表单日期输入绑定到后端Livewire组件中的模型Carbon属性,但到期日期...}

Copyright ©2021 时间戳转换器 小常识 114pp | 陕ICP备18005036号