/** * функция получения результатов поиска с полным совпадением по всем поисковым словам * @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 hasChildren() { if ($this->gender) { $field = 'mother_id'; } else { $field = 'father_id'; } //$result = count(Relatives::find()->where([$field => $this->id])->all()); $result = count(Relatives::findAll([$field => $this->id])); return $result; }
function renderRelativesTable($children, $level, &$common) { $nextLevelChildren = []; $count = 0; if ($level == 1) { $title = $level . ' Дети'; } elseif ($level == 2) { $title = $level . ' Внуки'; } elseif ($level == 3) { $title = $level . ' Правнуки'; } else { $title = $level . ' уровень'; } echo Html::beginTag('table', ['class' => 'table table-striped table-bordered detail-view']); echo Html::beginTag('tr', ['class' => 'info']); echo Html::tag('th', $title, ['colspan' => COL_SPAN]); echo Html::endTag('tr'); foreach ($children as $child) { echo Relatives::renderRow($child->id); $count++; if ($child->gender) { $field = 'mother_id'; } else { $field = 'father_id'; } $nextChildren = Relatives::findAll([$field => $child->id]); if (count($nextChildren) > 0) { foreach ($nextChildren as $nextChild) { $nextLevelChildren[] = $nextChild; } } } echo Html::beginTag('tr', ['class' => 'info']); echo Html::tag('th', 'Итого: ' . $count, ['colspan' => COL_SPAN]); echo Html::endTag('tr'); echo Html::endTag('table'); $common += $count; if (count($nextLevelChildren) > 0) { renderRelativesTable($nextLevelChildren, ++$level, $common); } }
</p> <div class="row"> <div style="float: left" class="col-xs-6"> <div class="panel panel-info"> <div class="panel-heading"> <h3 class="panel-title">Данные</h3> </div> <div class="panel-body"> <?php echo DetailView::widget(['model' => $model, 'attributes' => ['id', 'title:ntext', 'description:ntext', 'latitude', 'longitude', ['attribute' => 'created_at', 'value' => date('d-m-Y H:i:s', $model->created_at)], ['attribute' => 'updated_at', 'value' => date('d-m-Y H:i:s', $model->updated_at)]]]); ?> </div> </div> <?php $relatives = Relatives::findAll(['cemetery_id' => $model->id]); if (count($relatives)) { ?> <div class="panel panel-default panel-info"> <div class="panel-heading"> <h3 class="panel-title">Список захороненых</h3> </div> <div class="panel-body"> <table class="table table-striped table-bordered detail-view"> <?php foreach ($relatives as $relative) { echo Relatives::renderRow($relative->id); } ?> </table> </div>