@yii2ru

Страница 16 из 1721
SiZE
29.09.2016
07:12:19
это ж аттрибут йопта. с ним можно работать - изменить для сохранения нового, удалить

Ilya
29.09.2016
07:13:20
Это все хорошо, но я немного о другом

Александр
29.09.2016
07:13:28
например в форме будет выбор из селекта...

Ilya
29.09.2016
07:14:03
Что если я вызываю зависимость, я ожидаю получить её содержимое в свойстве с названием столбца, а не в свойстве, с названием функции

Google
Ilya
29.09.2016
07:14:21
Я не говорю, что это вызывает ошибки, я говорю, что было бы удобнее

SiZE
29.09.2016
07:14:35
ну это пожалуй как ожидать что тебе майбах покататься дадут после этого :D

Anatoly
29.09.2016
07:14:37
Нет, в атрибут вы его не получите

Это разные понятия

Ilya
29.09.2016
07:14:48
ведь мы в любом случае сможем получить индекс, обратившись в ['related_name']['index']

SiZE
29.09.2016
07:15:20
столбец и зависимость не одно и то же.

Anatoly
29.09.2016
07:15:54
ведь мы в любом случае сможем получить индекс, обратившись в ['related_name']['index']
И при попытке вызвать save у основной модели, вы получите пинок

Ilya
29.09.2016
07:15:58
Я согласен, но разве кто-то оставляет столбец с названием индекса, если есть подгруженная зависимость?

SiZE
29.09.2016
07:16:04
пример: function getProfile() { return $this->hasOne(); } function getProfileActivated() { return $this->hasOne()->active(); } fcuntion getProfileDisabled() { return $this->hasOne()->disabled(); }

Ilya
29.09.2016
07:16:05
Так нет же

Anatoly
29.09.2016
07:16:07
"разве кто-то"?

Ilya
29.09.2016
07:16:09
я не говорю про объекты

Anatoly
29.09.2016
07:16:10
Кто не оставляет?

Google
Ilya
29.09.2016
07:16:15
Если мы используем asArray()

Я забыл упомянуть, моя ошибка

Там же мы не будем уже использовать save()

Anatoly
29.09.2016
07:16:46
Ну ты можешь определить метод fields() в модели, чтобы asArray работал как тебе нужно

SiZE
29.09.2016
07:17:00
+1

Ilya
29.09.2016
07:17:48
Сейчас ознакомимся)

Я правильно понял? public function fields() { return [ 'userExample' => 'user_example' ]; }

Anatoly
29.09.2016
07:24:57
return [ 'arrayField' => 'objectField', 'arrayField2' => function ($model) { return $model->objectField2; }, ];

Ilya
29.09.2016
07:25:46
Т.е. public function fields() { return [ 'user_example' => 'userExample' ]; }

SiZE
29.09.2016
07:25:59
да

но не так )

Ilya
29.09.2016
07:26:14
?)

В чем ошибка?)

SiZE
29.09.2016
07:27:39
вроде все ок

Anatoly
29.09.2016
07:27:44
https://github.com/yiisoft/yii2/blob/master/framework/base/Arrayable.php#L64

Ilya
29.09.2016
07:33:19
Хм, я так понял, название элемента возвращаемого массива - то, что мы хотим видеть, а его значение - то, откуда это брать.

Только вот в чем проблема. Добавление в модель следующего кода, никак не повлияла на возвращаемые этой моделью данные: public function fields() { return [ 'nlesson' => 'next_lesson' ]; }

Anatoly
29.09.2016
07:34:31
А как ты массив получаешь из модели?

Ilya
29.09.2016
07:34:53
В вызове сразу указываю asArray()->all()

или это работает только для toArray?

Google
Ilya
29.09.2016
07:35:27
Я просто ни разу не использовал toArray и предполагаю, что это функция фреймворка

а не разработчика

Anatoly
29.09.2016
07:36:12
Только toArray

asArray вернёт ответ PDO как массив

Ilya
29.09.2016
07:36:34
Печально

Anatoly
29.09.2016
07:37:07
Неясна прикладная задача. Я уверен, что есть лучшие способы её решения

API?

Ilya
29.09.2016
07:37:14
Поэтому я и толкую, если мы сразу в вызове указали, что будем работать с данными только как с массивом, почему не называть свойства по человечески

У меня это решается, на данный момент, так: $item['user_example'] = $item['userExample']; unset($item['userExample'];

Степан
29.09.2016
07:38:19
Где можно подробно почитать что можно в модели писать, а что в контроллере? У меня сейчас так получается что я и там что то сделаю, и там. Там логика и там логика, там данные и там данные.

SiZE
29.09.2016
07:38:21
потому что заменять значение с одним типом данных на другой плохая практика

это неявно и повлечет ошибки.

Степан
29.09.2016
07:39:32
Ок) а выжимки какие нибудь, статьи с примерами?

Ilya
29.09.2016
07:39:49
Черт, я дико туплю Я рассматривал со стороны эту фичу, как выродок GII, поэтому забыл, что там можно генерировать любые данные и по-любому их изменять

Прошу прощения, за пустую дисскуссию

и спасибо, что вправили мозги)

Anatoly
29.09.2016
07:40:59
Gii в чистом виде так себе. Мы его кастомизируем, например, под себя

Ilya
29.09.2016
07:41:34
Просто редко что изменял в моделях, для создания API стандартных методов вполне хватает)

Только вот слегка раздражает, когда не понятно по какой причине он начинает добавлять нули названию функции

Google
Ilya
29.09.2016
07:42:16
Хотя аналогичного названия там же нет

Artem
29.09.2016
08:27:00
Привет всем. Народ кто знает как в Yii2 с помощью DAO сделать update нескольких строк таблиц БД наиболее эффективно? Модели не используются.

Artem
29.09.2016
09:06:58
Да уж. Спасибо Дмитрий. Буду делать в цикле и страдать :)

Дмитрий
29.09.2016
09:08:30
Вам виднее, конечно, нужен ли там цикл. От конкретной задачи зависит.

Виталий
29.09.2016
09:26:19
Да уж. Спасибо Дмитрий. Буду делать в цикле и страдать :)
Зачем страдать? Задача детально не описана. Если Достаточно выполнения SQL-запроса вида UPDATE tbl SET x=y WHERE z=a, можете его оформить одним запросом

Anatoly
29.09.2016
09:32:39
Ilya
29.09.2016
10:26:26
Есть таблица 1. В ней есть связь к таблице 2. В таблице 2 есть связь к таблице 3. Можно ли в модели прописать так, чтобы по методу getSomething отадавались сразу данные таблицы 3? Т.е. без данных таблицы 2. Например: Группа -> Заявки в группу -> Пользователь И при записи Group::find()->with('users')->all(); получать список пользователей, оставивших заявки А не список заявок, с зависимостью к пользователю

Anatoly
29.09.2016
10:26:52
Можно, см. via

Ilya
29.09.2016
10:31:54
в viaTable используются поля промежуточной таблицы, в качестве индекса?

Т.е. return $this->hasMany(Orders::className(), ['group' => 'index']) ->viaTable('users', ['index', 'user']);

Где user поле таблицы orders

?

Просто у меня, когда пытаюсь ввести в viaTable 'index' вместо 'user', он приплетает индекс из таблицы Groups, а не Orders

А поле 'user' попросту не видит

Artem
29.09.2016
10:36:16
Модели вообще не используются или они не используются для этой конкретной задачи?
для этой задачи не используются. Ребят всем спасибо. Сделал через цикл. Там небольшие наборы данных и редко используемый функционал поэтому терпимо.

Anatoly
29.09.2016
10:40:26
Artem
29.09.2016
10:41:04
Нет модели не использутся. Спасибо.

Antony
29.09.2016
10:49:27
Подскажите как в activeRecord задать правило по условию?

Google
Anatoly
29.09.2016
10:49:57
return [ ['name', 'required', 'when' => function() {}], ];

Ilya
29.09.2016
10:51:20
Так все же почему я не могу нормально получить данные по запросу: return $this->hasMany(Orders::className(), ['group' => 'index'])->viaTable('user', ['index' => 'user']);

Antony
29.09.2016
10:52:31
Ilya
29.09.2016
10:53:05
Разве запись viaTable('user', ['index' => 'user']) в данном случае не означает "Искать в таблице user пользователя, у которого поле index равно значению пол user в таблице orders"?

И никто не нашел мою ошибку?(

Anatoly
29.09.2016
11:03:33
Илья, в документации на русском языке это уже разжёвано. Могу дать ссылку

Ilya
29.09.2016
11:04:18
Ладно, если никто и не читал, то ошибка была в том, что я пытался построить связь цепочкой. Т.е. из таблицы group найти связь с orders и найти связь с user И никто не нашел, что ошибка была в том, что нужно было строить связь, основываясь на логике "Через". Т.е. найти в таблице user через (via) orders

Когда я просто пытался провести линию напрямую

Anatoly
29.09.2016
11:04:45
Никто и не искал, я полагаю, потому и не нашёл тоже никто

Antony
29.09.2016
11:05:17
Можно мне ссыль на актуальную русскую доку.

Ilya
29.09.2016
11:05:27
https://github.com/yiisoft/yii2/blob/master/docs/guide-ru/README.md

И, между прочим, этот раздел вообще не содержит никакой, по сути, информации. Кроме примера кода и объяснения того, как работают промежуточные таблицы, а не объяснения, как работают данные методы.

Borisov
29.09.2016
11:15:51
английская дока намного информативнее

Antony
29.09.2016
11:20:32
Я в основном на английской сижу, но некоторые непонятные моменты подглядеть в русской неплохо тоже.

Кстати где найти все допустимые параметры валидации в rules? Ибо в доках не могу найти тот же when , range

Anatoly
29.09.2016
11:28:50
Я обычно заглядываю в yii\validators\Validator

Там вполне ясно всё описано

Artem
29.09.2016
11:29:05
https://nix-tips.ru/yii2-api-guides/guide-ru-tutorial-core-validators.html

Или в класс нужного валидатора смотреть в его публичные св-ва

Antony
29.09.2016
11:32:10
Да, все нашел в публичных свойствах.

Еще небольшое уточнение, если я задаю в scenarios нужные поля для сценариев, то в rules все равно нужно прописывать 'on' => 'scenario' или будут применятся только поля, указанные в сценарии? В зависимости поведения как добавить поля во все сценарии? Получается либо нужно дублировать поля в scenarios либо задавать сценарии ко всем полям?

Страница 16 из 1721