e3ec491c
andryeyev
+ Catalog в backe...
|
1
2
3
|
<?php
namespace common\models;
|
e130021e
andryeyev
+ термины и меню ...
|
4
|
|
e3ec491c
andryeyev
+ Catalog в backe...
|
5
|
use Yii;
|
e130021e
andryeyev
+ термины и меню ...
|
6
7
|
use yii\base\Model;
use yii\db\Query;
|
e3ec491c
andryeyev
+ Catalog в backe...
|
8
9
|
/**
|
e130021e
andryeyev
+ термины и меню ...
|
10
|
* Signup form
|
e3ec491c
andryeyev
+ Catalog в backe...
|
11
|
*/
|
e130021e
andryeyev
+ термины и меню ...
|
12
13
|
class Catalog extends Model
{
|
e3ec491c
andryeyev
+ Catalog в backe...
|
14
|
/**
|
e130021e
andryeyev
+ термины и меню ...
|
15
|
* весь список терминов
|
e3ec491c
andryeyev
+ Catalog в backe...
|
16
|
*/
|
e130021e
andryeyev
+ термины и меню ...
|
17
|
static function get ()
|
e3ec491c
andryeyev
+ Catalog в backe...
|
18
|
{
|
e130021e
andryeyev
+ термины и меню ...
|
19
20
21
22
23
24
25
|
return yii::$app->db->createCommand('
SELECT
termin_structure.termin_id,
termin_structure.termin_pid,
termin_lang.termin_title
FROM termin_structure
INNER JOIN termin_lang ON termin_lang.termin_id = termin_structure.termin_id
|
f1ea4c01
andryeyev
lang_id => langua...
|
26
|
AND termin_lang.language_id = '.Yii::$app->params['language_id'].'
|
e130021e
andryeyev
+ термины и меню ...
|
27
28
|
ORDER BY termin_structure.termin_id ASC, termin_structure.termin_pid ASC
')->queryAll();
|
e3ec491c
andryeyev
+ Catalog в backe...
|
29
|
}
|
e130021e
andryeyev
+ термины и меню ...
|
30
|
|
e3ec491c
andryeyev
+ Catalog в backe...
|
31
|
/**
|
3fe15343
andryeyev
+ новая версия (d...
|
32
|
* Выполняет поиск по параметрам
|
f1ea4c01
andryeyev
lang_id => langua...
|
33
|
* @param array $param принимает [catalog_id, language_id, return_one, return_field, show_all]
|
94ea562b
andryeyev
+ редактирование ...
|
34
35
36
37
38
39
|
* @return array one | array all | string значение масива
*/
public function finInfo (array $params = [])
{
Tools::ifNotExist ($params, array (
'catalog_id' => false,
|
f1ea4c01
andryeyev
lang_id => langua...
|
40
|
'language_id' => false,
|
94ea562b
andryeyev
+ редактирование ...
|
41
42
43
44
|
'return_one' => false,
'return_field' => false,
'show_all' => false,
'to_array' => true,
|
e130021e
andryeyev
+ термины и меню ...
|
45
46
|
));
|
94ea562b
andryeyev
+ редактирование ...
|
47
|
$model = new Catalog();
|
e130021e
andryeyev
+ термины и меню ...
|
48
49
50
51
52
|
$query = $model->find()->select('*');
$query->joinWith(['relationCatalogLang']);
|
94ea562b
andryeyev
+ редактирование ...
|
53
|
$WHERE = array ();
|
e130021e
andryeyev
+ термины и меню ...
|
54
55
|
if ($params['catalog_id'])
|
94ea562b
andryeyev
+ редактирование ...
|
56
57
58
|
{
$WHERE['catalog.catalog_id'] = $params['catalog_id'];
}
|
e130021e
andryeyev
+ термины и меню ...
|
59
|
|
f1ea4c01
andryeyev
lang_id => langua...
|
60
|
if ($params['language_id'])
|
94ea562b
andryeyev
+ редактирование ...
|
61
|
{
|
f1ea4c01
andryeyev
lang_id => langua...
|
62
|
$WHERE['catalog_i18n.language_id'] = $params['language_id'];
|
94ea562b
andryeyev
+ редактирование ...
|
63
|
}
|
e130021e
andryeyev
+ термины и меню ...
|
64
|
|
94ea562b
andryeyev
+ редактирование ...
|
65
|
if (! empty ($WHERE))
|
e130021e
andryeyev
+ термины и меню ...
|
66
|
{
|
94ea562b
andryeyev
+ редактирование ...
|
67
68
|
$query->where($WHERE);
}
|
e130021e
andryeyev
+ термины и меню ...
|
69
70
|
if ($params['to_array'])
|
94ea562b
andryeyev
+ редактирование ...
|
71
72
73
|
{
$query = $query->asArray();
}
|
e130021e
andryeyev
+ термины и меню ...
|
74
75
76
77
78
79
80
|
if ($params['return_one'] || $params['return_field'])
{
$result = $params['return_field'] ? $query->one($params['return_field']) : $query->one();
}
else
|
94ea562b
andryeyev
+ редактирование ...
|
81
|
{
|
e130021e
andryeyev
+ термины и меню ...
|
82
83
84
85
86
87
88
89
90
|
$result = $query->all();
}
return $result;
}
// ===================
// ==== STRUCTURE ====
// ===================
|
94ea562b
andryeyev
+ редактирование ...
|
91
|
|
e130021e
andryeyev
+ термины и меню ...
|
92
93
94
95
96
97
98
|
var $mass = array ();
public function build ()
{
if ($this->mass = self::get ())
{
return $this->getRecrusive (8);
|
94ea562b
andryeyev
+ редактирование ...
|
99
|
}
|
e130021e
andryeyev
+ термины и меню ...
|
100
101
102
103
104
105
106
|
}
public function findChild ($id)
{
$mass = array ();
foreach ($this->mass as $row)
|
94ea562b
andryeyev
+ редактирование ...
|
107
|
{
|
e130021e
andryeyev
+ термины и меню ...
|
108
109
110
111
|
if ($row['termin_pid'] == $id)
{
$mass[] = $row;
}
|
94ea562b
andryeyev
+ редактирование ...
|
112
|
}
|
e130021e
andryeyev
+ термины и меню ...
|
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
return $mass;
}
public function getRecrusive ($menu_id)
{
$items = $this->findChild($menu_id);
if (! empty ($items))
{
echo '<ul>';
foreach ($items as $row)
{
echo '<li>'.$row['termin_title'].'</li>';
if ($row['termin_pid'] != 0)
{
$this->getRecrusive($row['termin_id']);
}
}
|
94ea562b
andryeyev
+ редактирование ...
|
134
|
|
e130021e
andryeyev
+ термины и меню ...
|
135
136
137
|
echo '</ul>';
}
|
94ea562b
andryeyev
+ редактирование ...
|
138
|
}
|
e130021e
andryeyev
+ термины и меню ...
|
139
140
|
// =====
|
e3ec491c
andryeyev
+ Catalog в backe...
|
141
142
143
144
|
/**
* @return \yii\db\ActiveQuery
*/
|
94ea562b
andryeyev
+ редактирование ...
|
145
|
public function getRelationCatalogLangPlus()
|
e130021e
andryeyev
+ термины и меню ...
|
146
|
{
|
f1ea4c01
andryeyev
lang_id => langua...
|
147
|
return $this->getRelationCatalogLang()->where(['language_id' => yii::$app->params['language_id']]);
|
94ea562b
andryeyev
+ редактирование ...
|
148
|
}
|
e130021e
andryeyev
+ термины и меню ...
|
149
|
|
94ea562b
andryeyev
+ редактирование ...
|
150
151
152
|
/**
* @return \yii\db\ActiveQuery
*/
|
e130021e
andryeyev
+ термины и меню ...
|
153
|
public function getRelationCatalogLang()
|
e3ec491c
andryeyev
+ Catalog в backe...
|
154
|
{
|
94ea562b
andryeyev
+ редактирование ...
|
155
|
return $this->hasOne(CatalogLang::className(), ['catalog_id' => 'catalog_id']);
|
e3ec491c
andryeyev
+ Catalog в backe...
|
156
|
}
|
94ea562b
andryeyev
+ редактирование ...
|
157
|
|
e130021e
andryeyev
+ термины и меню ...
|
158
|
}
|