
Matviy
05.09.2017
15:41:59
Вечно гемор с этими фильтрами и сортировками
То есть. как я понимаю, сначала делается тот же запрос для того, чтоб грид знал количество записей. Но блин, какого-то хрена там не учитывается часть select()

Alexandr
05.09.2017
15:44:48
алиасы полей из селекта не попадают в where
пиши в where все условие целиком

Google

Ivan
05.09.2017
15:45:14
Ага, есть такой прикол, когда происходит count() он вызывается без учёта что там в select

Matviy
05.09.2017
15:46:43
Ну блин
Тупо же
Ок, запишу тогда в условие
Я так понимаю, это для увеличения производительности?
Но можно было бы сделать проперти, чтоб я сам решал, нужно учитывать или нет
Вообще. постоянно какие-то танцы с бубном в этих SearchModel

Alexandr
05.09.2017
15:50:34
модели тут не причем, такой MySql

Сергей
05.09.2017
15:51:40
И ещё вопросик по БД.
Два запроса:
1) $rows = ActiveRecordClass::find()->select(['id', 'name'])->asArray()->all();
2) $rows = ActiveRecordClass::find()->select(['id', 'name'])->prepare(Yii::$app->db->queryBuilder)->createCommand()->queryAll();
В первом случае ошибка, во втором всё хорошо.
Проблема в первом случае в том, что он там пытается модели наполнить и не находит в массиве прочие параметры. Я вообще думал, что раз asArray - то должно работать, но слон там плавал, не выходит :(
Можно ли как-то более компактно написать запрос, чем во втором варианте?

Matviy
05.09.2017
15:51:48
Возможно, но я просто констатирую факт - фильтрация и сортировка как-то слишком нетривиально постоянно делается, как для таких постоянно нужных вещей
Да, спасибо, так работает

Ivan
05.09.2017
17:33:24
Хай всем! А PHP 5.6 поддерживает тернарный оператор if?
я вижу только в 7м можно использовать $var = $value ?? "Другое значение"; такую конструкцию а вот в 5,6 что то не могу найти

Google

Alex
05.09.2017
17:34:33
нет
только 7 и выше

Yaroslav
05.09.2017
17:34:41
ну да, это в семёре ??

Ivan
05.09.2017
17:34:49
блииииин
гадство(

Yaroslav
05.09.2017
17:35:05
а expr ? true-case : false-case есть в 5.x.

Ivan
05.09.2017
17:36:10
''return $data->status == 1 ? Html::a('Allow', ['allow', 'id_comment'=>$data->id_comment], ['class' => 'btn btn-primary']) : Html::a('disAllow', ['comment/disallow', 'id'=>$data->id_comment]); в общем я не хочу выводить 2е значение и не знаю как быть, это у меня в gridView через анонимную функцию происходит
да блин как код то вставлять сюда
``[
'class' => 'yii\grid\ActionColumn',
'template' => '{view} {mail} {delete}',
'buttons' => [
'mail' => function($data, $key, $index) {
return $data->status == 1 ? Html::a('Allow', ['allow', 'id_comment'=>$data->id_comment], ['class' => 'btn btn-primary']) : Html::a('disAllow', ['comment/disallow', 'id'=>$data->id_comment]);
}
]
]
],
djn

Сергей
05.09.2017
17:36:42
три апострофа или один
многострочный - три апострофа

Ivan
05.09.2017
17:36:57
'''[
'class' => 'yii\grid\ActionColumn',
'template' => '{view} {mail} {delete}',
'buttons' => [
'mail' => function($data, $key, $index) {
return $data->status == 1 ? Html::a('Allow', ['allow', 'id_comment'=>$data->id_comment], ['class' => 'btn btn-primary']) : Html::a('disAllow', ['comment/disallow', 'id'=>$data->id_comment]);
}
]
]
],
`[
'class' => 'yii\grid\ActionColumn',
'template' => '{view} {mail} {delete}',
'buttons' => [
'mail' => function($data, $key, $index) {
return $data->status == 1 ? Html::a('Allow', ['allow', 'id_comment'=>$data->id_comment], ['class' => 'btn btn-primary']) : Html::a('disAllow', ['comment/disallow', 'id'=>$data->id_comment]);
}
]
]
],

Сергей
05.09.2017
17:37:10
`
Три вначале и три в конце :)

Ivan
05.09.2017
17:37:36
[
'class' => 'yii\grid\ActionColumn',
'template' => '{view} {mail} {delete}',
'buttons' => [
'mail' => function($data, $key, $index) {
return $data->status == 1 ? Html::a('Allow', ['allow', 'id_comment'=>$data->id_comment], ['class' => 'btn btn-primary']) : Html::a('disAllow', ['comment/disallow', 'id'=>$data->id_comment]);
}
]
]
],
ну хоть что то за сегодня получилось)))))
вот как быть что бы не выводить 2е значение `Html::a('disAllow', ['comment/disallow', 'id'=>$data->id_comment]);

Дмитрий
05.09.2017
17:38:48

Google

Yaroslav
05.09.2017
17:39:09
офоромить анонимку выше по коду и оформить нормально, а не в это месиво.

Ivan
05.09.2017
17:39:11
вот тут я это и вычитал

Yaroslav
05.09.2017
17:39:35
и уже в 'mail' => $getControls.

Сергей
05.09.2017
17:40:06
return $data->status != 1 ?: Html::a('Allow', ['allow', 'id_comment'=>$data->id_comment];

Ivan
05.09.2017
17:40:12
точно, можно же и вынести
О!

Yaroslav
05.09.2017
17:42:21
почему почти?

Сергей
05.09.2017
17:42:57
Ещё как вариант выводить return Html::a('Allow', ['allow', 'id_comment'=>$data->id_comment];, а в параметре visible у колонки указать уже $data->status != 1

Ivan
05.09.2017
17:43:00
а это уже мой косяк)) Чтто не туда параметры улетают
почему то мне первый вариант больше нравится, сейчас только пойму почему не происходит нужно мне действия

Yaroslav
05.09.2017
17:44:36
да ваще непонятно, что ты так вцепился в этот ??.

Yaroslav
05.09.2017
17:44:48
и без него можно сделать нормально.

Сергей
05.09.2017
17:45:03
Продублирую... может сейчас кто ответит :)
И ещё вопросик по БД.
Два запроса:
1) $rows = ActiveRecordClass::find()->select(['id', 'name'])->asArray()->all();
2) $rows = ActiveRecordClass::find()->select(['id', 'name'])->prepare(Yii::$app->db->queryBuilder)->createCommand()->queryAll();
В первом случае ошибка, во втором всё хорошо.
Проблема в первом случае в том, что он там пытается модели наполнить и не находит в массиве прочие параметры. Я вообще думал, что раз asArray - то должно работать, но слон там плавал, не выходит :(
Можно ли как-то более компактно написать запрос, чем во втором варианте?

Yaroslav
05.09.2017
17:45:26
ты лучше вот этот вот $data->status != 1 оформи в какое-нибудь $data->isNotЧоТамПроверяется().

Сергей
05.09.2017
17:45:52

Yaroslav
05.09.2017
17:45:54
понаделают магических констант, потом без поллитра не разберёшься.

Ivan
05.09.2017
17:46:12
)))сейчас попробую

Yaroslav
05.09.2017
17:46:40
чо пробовать, сделай. 1 метод написать.

Google

Сергей
05.09.2017
17:46:43
код должен читаться

Дмитрий
05.09.2017
17:48:49

Ivan
05.09.2017
17:48:49
делаю)

Сергей
05.09.2017
17:50:32
ошибка-то какая в первом случае?
В глубинах фреймворка происходит заполнение модели из массива, полученного из БД.
То есть в модели есть ещё свойства, например desc. А в полученном массиве нет desc и вываливается ошибка, что неизвестный индекс массива.

Дмитрий
05.09.2017
17:51:28
Текст ошибки?

Сергей
05.09.2017
17:52:03
щас нет возможности запустить... ну там undefined index что-то там

Дмитрий
05.09.2017
17:52:04
и код класса ещё бы увидеть

Сергей
05.09.2017
17:54:44
https://github.com/yiisoft/yii2/blob/master/framework/db/ActiveRelationTrait.php#L469

Admin
ERROR: S client not available

Сергей
05.09.2017
17:55:20
Вот тут...
а... забыл, важно.
Ещё есть relation и как раз по атрибуту, по которому relation вот тут выпадает ошибка

Yaroslav
05.09.2017
18:03:12
гитхаб поломался?
у меня вёрстка разъехалась.

Сергей
05.09.2017
18:03:55
да, что-то пошло не так)

Yaroslav
05.09.2017
18:04:11
стили пролюбили - 404.

Matviy
05.09.2017
18:11:19

Ivan
05.09.2017
18:11:43
там где Ё
тильда

Matviy
05.09.2017
18:12:58
Спасибо)
Работает

Yaroslav
05.09.2017
18:13:44
:D

Google

Виктор
05.09.2017
18:20:19
вот
спасибо, уже разобрался

Matviy
05.09.2017
21:25:39
Как можно передать в ActiveRecord параметры в метод init()? Или такое только через конструктор? Хочу, чтоб при создании новой модели можно было передать параметры

Alex
05.09.2017
21:27:16
надо дописывать конструктор

Matviy
05.09.2017
21:28:17
Понятно

Nikolay
05.09.2017
21:28:47
Сделай фабрику которая будет тебе модели создавать

Matviy
05.09.2017
21:31:10
Да там не такая уж важная задача, чтоб фабрики городить

Alex
05.09.2017
21:31:32
тогда давай распихивай по микросервсам и по сокетам передавай данные)))))

Matviy
05.09.2017
21:31:39
?

Alex
05.09.2017
21:31:43
ради красивого взаимодейтсвия)

Matviy
05.09.2017
21:32:41
Кстати, как мне кажется, нельзя в модели делать параметры в конструкторе, ибо будет матерится при неявном создании моделей (например, find()->one(), и другие

Alex
05.09.2017
21:32:56
почему это?

Matviy
05.09.2017
21:33:03
ПРобовал

Alex
05.09.2017
21:33:08
public function __construct($config = [], $attributes =[])
вот так

Nikolay
05.09.2017
21:33:14
можешь сделать через паттерн билдер )

Alex
05.09.2017
21:33:28
только не забудь парент вызвать только содним параметром

Matviy
05.09.2017
21:33:58
Хм
Ну я вроде пробовал, был какой-то гемор с этим. Возможно, не сделал значение по умолчанию

Alex
05.09.2017
21:34:29
скорее всего
или поставил атрибуты в первое поле