$query->active() ->with(array( 'images', 'city', )); $query->applyCategoriesWithSub($model); $cr=new CDbCriteria; $cr->distinct = true; // предотвращает повтор объявлений на странице if($this->city->id) { $cr->join = 'LEFT JOIN "orgs_district" "orgsdistrict" ON ("orgsdistrict"."org"="t"."id")'; $cr->addCondition('city.id='.$this->city->id.' and orgsdistrict.district='.$district->id); } $query->getDbCriteria()->mergeWith($cr); $provider = new CActiveDataProvider($query, array( // Set id to false to not display model name in // sort and page params 'id'=>false, 'pagination'=>array( 'pageSize'=>25, ) )); if($provider->totalItemCount > 0) { $url = Yii::app()->createAbsoluteUrl('/catalog/catalog/districtview', array('city'=>$this->city->url, 'url'=>$model->url, 'district'=>'mikrorayon', 'district_url'=>$district->url)); echo '<div class="col-sm-6 col-xs-12"><a class="graytogreen" href="'.$url.'">'.$district->district_name.'</a></div>'; } } }
public function getNearRayonOrg($model,$orgsCats,$limit,$near,$nearmicro) { /* ближайшие организации */ $district = 'rayon'; $districts = $model->orgsDistrict; $district_model = null; if(!empty($districts)){ foreach ($districts as $d) { if((mb_strpos($d->districtid->district_name, 'район', 0, 'UTF-8') !== false ) && (mb_strpos($d->districtid->district_name, 'микрорайон', 0, 'UTF-8') === false )){ $district_model = $d->districtid; break; } } } if(!$district_model) { return null; } $query = new Orgs(null); $query->active() ->with(array( 'images', 'city', )); // все категории организации $query->applyCategoriesWithSub($orgsCats); $cr=new CDbCriteria; $cr->distinct = true; // предотвращает повтор объявлений на странице $cr->join = 'LEFT JOIN "orgs_district" "orgsdistrict" ON ("orgsdistrict"."org"="t"."id")'; $cr->addCondition('city.id='.$this->city->id.' and orgsdistrict.district='.$district_model->id); $notin = array(); if($near){ foreach ($near->data as $n) { $notin[] = $n->id; } } if($nearmicro){ foreach ($nearmicro->data as $n) { $notin[] = $n->id; } } $notin[] = $model->id; $cr->addNotInCondition('orgsdistrict.org',$notin); $cr->limit = $limit; $query->getDbCriteria()->mergeWith($cr); $nearProvider = new CActiveDataProvider($query, array( // Set id to false to not display model name in // sort and page params 'id'=>false, 'pagination'=>false )); return $nearProvider; }