Пример #1
0
 /**
  * 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;
 }
Пример #2
0
 /**
  * функция получения результатов поиска с полным совпадением по всем поисковым словам
  * @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;
 }
Пример #3
0
 public function getChildren()
 {
     $children = Relatives::find()->where(['father_id' => $this->husband_id])->andWhere(['mother_id' => $this->wife_id])->all();
     return $children;
 }
Пример #4
0
<?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>