/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = Relatives::find()->orderBy('sname', 'fname', 'mname'); $dataProvider = new ActiveDataProvider(['query' => $query]); $dataProvider->setSort(['attributes' => ['fullName' => ['asc' => ['sname' => SORT_ASC, 'fname' => SORT_ASC], 'desc' => ['sname' => SORT_DESC, 'fname' => SORT_DESC], 'default' => SORT_ASC]]]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); $query->joinWith(['father', 'mother']); return $dataProvider; } $query->andWhere('fname LIKE "%' . $this->fullName . '%" OR sname LIKE "%' . $this->fullName . '%" OR mname LIKE "%' . $this->fullName . '%"'); $query->andFilterWhere(['id' => $this->id, 'bdate' => $this->bdate, 'bday' => $this->bday, 'mother_id' => $this->mother_id, 'father_id' => $this->father_id, 'gender' => $this->gender, 'ddate' => $this->ddate, 'cemetery_id' => $this->cemetery_id]); $query->andFilterWhere(['like', 'bmonth', $this->bmonth])->andFilterWhere(['like', 'byear', $this->byear])->andFilterWhere(['like', 'img', $this->img])->andFilterWhere(['like', 'bplace', $this->bplace])->andFilterWhere(['like', 'descr', $this->descr])->andFilterWhere(['like', 'second_sname', $this->second_sname])->andFilterWhere(['like', 'dday', $this->dday])->andFilterWhere(['like', 'dmonth', $this->dmonth])->andFilterWhere(['like', 'dyear', $this->dyear])->andFilterWhere(['like', 'rod', $this->rod])->andFilterWhere(['like', 'hidden', $this->hidden])->andFilterWhere(['like', 'grave_picture', $this->grave_picture]); return $dataProvider; }
/** * функция получения результатов поиска с полным совпадением по всем поисковым словам * @param string $searchString * @return array массив, содержащий id найденных записей */ static function getComplitMatch($keywords) { $keywords = explode(' ', $keywords); $results = []; $flag = FALSE; foreach ($keywords as $keyword) { $results2 = []; $records = Relatives::find()->orderBy('sname', 'fname', 'mname')->andWhere(['like', 'sname', $keyword])->orWhere(['like', 'descr', $keyword])->orWhere(['like', 'mname', $keyword])->orWhere(['like', 'rod', $keyword])->orWhere(['like', 'second_sname', $keyword])->orWhere(['like', 'fname', $keyword])->all(); if (!$flag) { foreach ($records as $record) { $results[] = $record->id; } $flag = true; } else { foreach ($records as $record) { $results2[] = $record->id; } $results = array_intersect($results2, $results); } } $result = Relatives::findAll($results); return $result; }
public function getChildren() { $children = Relatives::find()->where(['father_id' => $this->husband_id])->andWhere(['mother_id' => $this->wife_id])->all(); return $children; }
<?php use yii\helpers\Html; use frontend\models\Relatives; /* @var $this yii\web\View */ $this->title = 'gapchich.ru'; ?> <div class="site-index"> <div class="jumbotron"> <h1>Гапчичи</h1> <p class="lead">Сайт посвящён фамилии Гапчич, людям с этой фамилией и их родственникам.</p> </div> <div class="body-content"> Если вы носите фамилию Гапчич - возникало ли у вас желание узнать откуда ведёт своё происхождение ваша фамилия? Как много людей в мире с такой же фамилией? Где они живут? Как с ними пообщаться? Или может быть вы когда-то потеряли связь со своим родственником и теперь хотели бы его найти? Ответы на эти вопросы и пытается дать наш сайт. <?php $count = Relatives::find()->where(['rod' => 'Гапчичи'])->count(); echo Html::tag('p', 'Кол-во людей из рода "Гапчич" внесённые в базу - ' . $count); ?> <div class="row"> </div> </div> </div>