我有这样的网格视图:
但每当我使用过滤器时,预期结果只有一行,它就会显示以下错误:
尝试访问null类型的值的数组偏移量
这是搜索模型中的代码:
public function searchproduksi($params) {
$query = Entrisampelbulanantanpaduplicateplusperusahaan::find()
->where('statusnya <> 0')
->select(['entrisampelbulanantanpaduplicateplusperusahaan.kode_satuan',
'entrisampelbulanantanpaduplicateplusperusahaan.tahun',
'entrisampelbulanantanpaduplicateplusperusahaan.triwulan',
'entrisampelbulanantanpaduplicateplusperusahaan.kodebulan',
'entrisampelbulanantanpaduplicateplusperusahaan.kode_kabupaten',
'entrisampelbulanantanpaduplicateplusperusahaan.kode_komoditas',
'entrisampelbulanantanpaduplicateplusperusahaan.statusnya',
'kabupaten.nama_kabupaten as wilayah',
//'entrisampelbulanantanpaduplicateplusperusahaan.banyak_satuan',
'sum(banyak_satuan) AS banyak_satuan'
])
->groupBy(['tahun',
'triwulan',
'kodebulan',
'entrisampelbulanantanpaduplicateplusperusahaan.kode_komoditas',
'entrisampelbulanantanpaduplicateplusperusahaan.kode_satuan'])
;
// add conditions that should always apply here
$query->joinWith(['regencyrel', 'district', 'commodity', 'unit']);
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort' => [
'defaultOrder' => ['tahun' => SORT_ASC, 'triwulan' => SORT_ASC, 'kodebulan' => SORT_ASC, 'kode_komoditas' => SORT_ASC,]]
]);
$this->load($params);
if (!$this->validate()) {
return $dataProvider;
}
// grid filtering conditions
$query->andFilterWhere([
'id_sampel' => $this->id_sampel,
'entrisampelbulanantanpaduplicateplusperusahaan.triwulan' => $this->triwulan,
'banyak_satuan' => $this->banyak_satuan,
...
'entrisampelbulanantanpaduplicateplusperusahaan.kodebulan' => $this->kodebulan,
'target' => $this->target,
]);
$query->andFilterWhere(['like', 'kode_perusahaan', $this->kode_perusahaan])
->andFilterWhere(['like', 'tahun', $this->tahun])
...
->andFilterWhere(['like', 'accessToken', $this->accessToken]);
return $dataProvider;
}
过滤器使用属性tahun、triwulan和\u kodebulan。
上述代码的预期sql语法为:
SELECT `entrisampelbulanantanpaduplicateplusperusahaan`.`kode_satuan`, `entrisampelbulanantanpaduplicateplusperusahaan`.`tahun`, `entrisampelbulanantanpaduplicateplusperusahaan`.`triwulan`, `entrisampelbulanantanpaduplicateplusperusahaan`.`kodebulan`, `entrisampelbulanantanpaduplicateplusperusahaan`.`kode_kabupaten`, `entrisampelbulanantanpaduplicateplusperusahaan`.`kode_komoditas`, `entrisampelbulanantanpaduplicateplusperusahaan`.`statusnya`, `kabupaten`.`nama_kabupaten` AS `wilayah`, sum(banyak_satuan) AS `banyak_satuan` FROM `entrisampelbulanantanpaduplicateplusperusahaan` LEFT JOIN `perusahaan` ON `entrisampelbulanantanpaduplicateplusperusahaan`.`kode_perusahaan` = `perusahaan`.`username` LEFT JOIN `kabupaten` ON `perusahaan`.`kode_kabupaten` = `kabupaten`.`kode_kabupaten` LEFT JOIN `kecamatan` ON `entrisampelbulanantanpaduplicateplusperusahaan`.`id_kecamatan` = `kecamatan`.`id_kecamatan` LEFT JOIN `komoditas` ON `entrisampelbulanantanpaduplicateplusperusahaan`.`kode_komoditas` = `komoditas`.`kode_komoditas` LEFT JOIN `satuan` ON `entrisampelbulanantanpaduplicateplusperusahaan`.`kode_satuan` = `satuan`.`kode_satuan` WHERE (statusnya <> 0) AND ((`entrisampelbulanantanpaduplicateplusperusahaan`.`triwulan`='2') AND (`entrisampelbulanantanpaduplicateplusperusahaan`.`kodebulan`='5')) AND (`tahun` LIKE '%2020%') GROUP BY `tahun`, `triwulan`, `kodebulan`, `entrisampelbulanantanpaduplicateplusperusahaan`.`kode_komoditas`, `entrisampelbulanantanpaduplicateplusperusahaan`.`kode_satuan` ORDER BY `tahun`, `triwulan`, `kodebulan`, `kode_komoditas` LIMIT 20
我在phpmyadmin中运行它,它给出一行。
当过滤器的结果返回多行时(我也在phpmyadmin中运行它,以防万一,它会返回多行),它就可以正常工作了。
我错过了什么?
1条答案
按热度按时间9lowa7mx1#
解决方案
我不知道为什么但是当我移除连接时
regencyrel
这是一个连接通过另一个连接,它的工作奇迹。