$districts = District::model()->findAll($cr); if($districts) { echo '<div class="row"> <div class="col-lg-8 col-lg-offset-1 col-md-8 col-md-offset-1 col-sm-8 col-sm-offset-1 col-xs-12"> <h2 class="org_title" style="padding-left:26px;margin-bottom:26px;">'.$model->title .' по микрорайонам '.$this->city->rodpad.'</h2> <div class="card"> <div class="card-body card-padding"> <div class="row">'; foreach ($districts as $district) { if(mb_strpos($district->district_name, 'микрорайон', 0, 'UTF-8') !== false) { $query = new Orgs(null); $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);
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; }