PowerAxis
Читай выше
Vadim
Читай выше
> Считается, что правильная формулировка вопроса содержит как минимум половину ответа, а также это даёт толчок мыслям, направляя их в нужное русло
Ну да, похоже на правду.
PowerAxis
Я разделяю хранение и формы.
В форме уже хранится в виде массива.
Можешь объяснить?
Вот, к примеру, у меня задача - https://imgur.com/oAKXi4X
таких строк может быть много, и я просто дублирую инпут формы с именем типа
ProductForm[video][0]
....
ProductForm[video][3]
и закидываю в БД в одно поле как json.
Но при редактрировании нужно декрдировать json и вывести все эти поля... как ты такое средставми фреймворка делаешь?
Сергей
У меня как раз есть с видосами, ща)
Сергей
Можешь объяснить?
Вот, к примеру, у меня задача - https://imgur.com/oAKXi4X
таких строк может быть много, и я просто дублирую инпут формы с именем типа
ProductForm[video][0]
....
ProductForm[video][3]
и закидываю в БД в одно поле как json.
Но при редактрировании нужно декрдировать json и вывести все эти поля... как ты такое средставми фреймворка делаешь?
Форма (название видео + ID ролика на ютубе):
class VideosForm extends Model
{
public $youtubeId = [];
public $label = [];
public function __construct(Product $product = null, array $config = [])
{
if ($product) {
foreach ($product->videos as $video) {
$this->youtubeId[] = $video->youtubeId;
$this->label[] = $video->label;
}
}
parent::__construct($config);
}
public function rules(): array
{
return [
[['youtubeId', 'label'], 'each', 'rule' => ['filter', 'filter' => 'trim']],
['youtubeId', 'each', 'rule' => ['required']],
];
}
public function attributeLabels()
{
return [
'youtubeId' => 'ID ролика',
'label' => 'Название',
];
}
public function toProduct(Product $product)
{
$videos = [];
foreach (ValueHelper::assertArray($this->youtubeId) as $n => $youtubeId) {
$videos[] = ProductVideo::make([
'youtubeId' => $youtubeId,
'label' => ArrayHelper::getValue($this->label, $n),
]);
}
$product->videos = $videos;
}
}
Суть в том, что в конструкторе форма наполняется, а в функции toProduct выгружается в объект.
PowerAxis
ну я понял, ты отдельно форму делаешь в таком случае
Сергей
Да... у меня всегда отдельные формы
Сергей
в чистую AR как форму не пользую
PowerAxis
нет, я тоже в данном случае не использовал AR как форму
PowerAxis
просто поле с видосами относится, например, к свойству товара
PowerAxis
и мне кажется оверхэдом делать для поля отдельную форму
Сергей
Ну незнаю, у меня для многих полей отдельные модели, которые потому с помощью CompositeForm собираются в одну форму. Удобно - нет каши, все модели простые, а сам продукт сложный)
PowerAxis
ну, возможно, это и правильное решение. я понял, спасибо
PowerAxis
у елисеева такое видел
Sergey
Гайс может кто помочь?
Uncaught Error: Undefined class constant 'MYSQL_ATTR_INIT_COMMAND' in ..
Уже пытался в ini подключать и вот так
extension=pdo_mysql.so
и вот так
extension=php_pdo_mysql.so
PowerAxis
я попробую следующий раз такой вариант
Сергей
Sergey
убунту
Сергей
А php_pdo_mysql.so точно есть?
Sergey
да
Сергей
да
Может лучше в php чатике спросить?
Сергей
Думаю там быстрее ответят)(
Сергей
PowerAxis
А, ну тогда это не особо отличается от моего варианта
who are you
mrG1K
Подскажите как сделать условие on при leftJoin с несколькими условиями в массиве
Если юзаю массив то значения массива не преобразуются (название таблицы и тп) в запросе идут в '' , и ничего не джоиниться
mrG1K
в примерах лефт джоин юзают в строку ( но не хотелось бы (
Vano
mrG1K
https://i.g1k.ru/ZDRjNm.png
mrG1K
Формирует запрос вот так
https://i.g1k.ru/OWZiZD.png
mrG1K
т.е значения не прогоняются через преобразование таблиц с префиксом .. в итоге ничего не джоиниться
Vano
Expression используй, тогда экранироваться не будет.
mrG1K
Нуу даж не знаю как будет смотреться..
так то можно и в строку зафигачить то что сейчас есть добавить AND и оно вроде даже работает..
Но блин в доке написано что можно массив, и оно даже его юзает но както не оч(
https://i.g1k.ru/YjExND.png
Vano
пару секунд погоди
Vano
не, все таки только строками
Vano
не нашел я другого решения
mrG1K
Может кто знает?)
Судя по https://github.com/yiisoft/yii2/issues/11842#issuecomment-229024541
должно работать и в таком массиве.. Но не пашет(
Vano
а ну пришли свой код
Vano
только не картинкой
mrG1K
похоже решили это поведение не исправлять (
mrG1K
https://github.com/yiisoft/yii2/issues/7549
mrG1K
Добавили комментарий в код что это работает не так как ожидается и все
https://github.com/yiisoft/yii2/commit/e4dc2026bc3669cbc6f739f19de32c6a04d1a37f
The Ant
The Ant
чтоб не батхертить, просто не делай этого
The Ant
['order.UserId' => 'user.Id'] к такому. Сложно делать всегда в нижнем регистре и не выебываться?
mrG1K
Это не мой тикет
mrG1K
mrG1K
По комменту я понял что искать справедливости не стоит и заюзал строку..
The Ant
mrG1K
да там именно суть в том что массив и значения возвращаются как строка
mrG1K
Note that the array format of [[where()]] is designed to match columns to values instead of columns to columns, so
+ * the following would **not** work as expected: `['post.author_id' => 'user.id']`, it would
+ * match the `post.author_id` column value against the string `'user.id'`.
+ * It is recommended to use the string syntax here which is more suited for a join:
The Ant
точно не пашет... лол )
The Ant
через экпрешен пашет... но пару условий + плейсхолдер пиздец будет 😞
The Ant
->leftJoin(['p' => Post::tableName()], [
'p.post_id' => new \yii\db\Expression(':post_id'),
], [
':post_id' => 40,
])
типа того ченить :D
mrG1K
да пофиг уже.. заюзал строку как "рекомендуют" в "доке"..
С кучей AND и тп..
Erzhigit
Сергей
mrG1K
может кто знает, есть ли в каком нибудь датапикере возможность включить опцию выбор только целыми месяцами?
🛸
всем привет. случаем нет ли готово модуля никто не знает? авторизация короткая. входишь по спец ссылке - там уже админка (те не вводишь пароль - пароль генерируется автоматически и есть спец ссылка для доступа к админке)
🛸
те нет пользователей
Anonymous
А самому че никак? 🤔
🛸
есть типа таблица page и session - в session автоматически нагенерированные хеши для доступа к page
🛸
да не ) легко. просто думал вдруг есть - тогда смысл самому
🛸
а вот думаю самому делать - мд5 чем еще обернуть поверх чтобы сложнее было подобрать если что ?
🛸
я думал делать мд5 из user_name + date_create
🛸
но хз
Anonymous
А как потом пароль используется?
Anonymous
Можно будет через какую-то форму его ввести?
Vano
Vano
но хз
https://www.yiiframework.com/doc/guide/2.0/en/security-passwords
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
Если просто для хеша то пофигу что там будет
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
Есть его получить то доступ есть, а что закодировано абсолютно не важно
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
Любая рандомная соль