0
,我被捉住了在这里的情况yii2与自定义列查询得出:未知列“列名”
我这里有一个小的自定义搜索模型的代码
$query = Ad::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
if($subcategorymodel){
$query->andFilterWhere([
'sub_category_id' => $subcategorymodel->id,
]);
}
if($adcategorymodel){
$query->andFilterWhere([
'ad_category_id' => $adcategorymodel->id,
]);
}
if($nearmodel){
$lat = $nearmodel->latitude;
$long = $nearmodel->longitude;
$query->select('*, (
(
ACOS(SIN('.$lat.' * PI() /180) * SIN(latitude * PI() /180) + COS('.$lat.' * PI() /180) * COS(latitude * PI() /180) * COS(('.$long.' - `longitude`) * PI() /180)) *180/PI()
) *60 * 1.1515 * 1.609344
) AS distance');
$query->having('distance <=100'); //condition for my custom column
}
$query->andFilterWhere([
'status' => 1,
]);
return $dataProvider;
它运行“having子句”中罚款与$查询 - >有('距离< = 100');条款,但我得到这个错误
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'distance' in 'having clause'
The SQL being executed was: SELECT COUNT(*) FROM `tbl_ad` WHERE ((`sub_category_id`=1) AND (`ad_category_id`=1)) AND (`status`=1) HAVING distance <=100
Error Info: Array
(
[0] => 42S22
[1] => 1054
[2] => Unknown column 'distance' in 'having clause'
在视图我有什么是
<?php
echo ListView::widget([
'dataProvider' => $dataProvider,
'itemOptions' => ['class' => 'item'],
'itemView' => '_item_view',
'pager' => ['class' => \kop\y2sp\ScrollPager::className()]
]);
?>
,并在错误堆栈的检查,围绕码的地方,yii2这里调用这个函数(我猜玩与分页数据)
public function count($q = '*', $db = null)
{
return $this->queryScalar("COUNT($q)", $db);
}
那么,有没有一个解决方案/解决这个问题?