These are chat archives for yiisoft/yii2/rus

6th
Apr 2018
Кот Олигарха
@OligarchCat_twitter
Apr 06 09:07
привет всем
des1roer
@des1roer
Apr 06 09:39
как быть с пост апи?
Eugene
@bloodrain777
Apr 06 10:44

Всем привет, Мужики, вопрос следующего плана.

Есть дебильная структура таблиц в mysql

Transactions
transaction_id | tracking_code_id| action_id |

Type Transactions
action_id | transaction_settings_table_name // В реале тут даже не имя таблицы а имя класса php

Одна из Tranaction Settings назовем ее Registration

Registration
tracking_code_id | .......

Таких таблиц Tranaction Settings 4 штуки
Собственно вопрос, можно как то для transaction_id получить данные из Registration?
Пробовал через UNION но получается что некоторые данные дублируются

Получается что с Registration нет связи вообще никакой.... или я ее не вижу

Спасибо
arman
@kzgzhn
Apr 06 10:53
привет
можно как-то организовать жадную загрузку когда модели уже есть?
Что-то вроде,
ArModel::with(ArModel[] $models, 'relationName', function($q) {//..} )
Andrey Kushnarev
@andku83
Apr 06 10:59
@kzgzhn предусмотреть до выполнения запроса на получение данных
@bloodrain777 tracking_code_id - это не связь?
создай 4 связи, по связи для каждого типа транзакции
Igor Veremsky
@igorveremsky
Apr 06 11:02
@bloodrain777 если понял вопрос, то думаю можно сделать через inner join с параметрами где значение tracking_code_id с таблицы transactions равно tracking_code_id в таблице registration, но и transaction_id с таблицы transactions равно какому то нужному тебе значению
Andrey Kushnarev
@andku83
Apr 06 11:02
а перестроить БД уже нельзя?
@kzgzhn если нужны данные и не важно жадно ли они загружены, то можно просто обратиться к связи и они подтянутся
arman
@kzgzhn
Apr 06 11:04
@andku83 не могу, вариант только собрать id нужных моделей и повторно перезапросить уже с жадной загрузкой =/
@andku83 нюанс в Nested sets мне нужно на уровне PHP отфильтровать нужные, затем загрузить вместе со связями
Andrey Kushnarev
@andku83
Apr 06 11:14
@kzgzhn а доступ для редактирования класса в который нужно инклюдить связь есть?
arman
@kzgzhn
Apr 06 12:46
@andku83 да, класс через поведение подключает режим Дерева
Andrey Kushnarev
@andku83
Apr 06 12:47
что за поведение? или ты просишь помочь с черной коробкой?
arman
@kzgzhn
Apr 06 12:49
@andku83 https://github.com/creocoder/yii2-nested-sets
с поведением нет проблем, мне в любом случаи нужно взять все записи, посчитать, пофильтровать, а только потом показать некоторые записи, но раз думал что модели нужные уже есть, то как-то можно подгрузить жадно и связи
Andrey Kushnarev
@andku83
Apr 06 12:50
а что тебе жадно нужно подгружать?
Andrey Kushnarev
@andku83
Apr 06 12:58
$roots = Menu::find()->roots()->with('relationName')->all()
а так что не работает?
arman
@kzgzhn
Apr 06 13:12
@andku83 работает, но тянет все дерево со связями, мне нужно показать 5-10
Andrey Kushnarev
@andku83
Apr 06 13:13
покажи что ты делаешь и конкретизируй что нужно
arman
@kzgzhn
Apr 06 13:13
@andku83 мне проще будет переспросить еще раз:
Menu::find()->roots()->andWhere(['in', 'id', [5,2,5,6]])->with('relationName')->all()
вот чтоб не переспрашивать БД, я думал можно как-то подгрузить жадно на текущие модели
Andrey Kushnarev
@andku83
Apr 06 13:14
relationName - прямо так и пишешь?
напиши конкретный свой запрос, покажи что тянет по дебагеру, и скажи что там лишнее
arman
@kzgzhn
Apr 06 13:20

@andku83

relationName - прямо так и пишешь?
нет, там кучу условий + еще внутри другие связи

Andrey Kushnarev
@andku83
Apr 06 13:21
а как ты думаешь могу я знать какая из твоих "кучу условий" создает проблему не посмотрев на тот запрос что ты делаешь?
arman
@kzgzhn
Apr 06 13:21
@andku83
Проблема в том что показывать мне все не нужно, но нужно для расчетов, поэтом делают запрос всех моделей без связей, дальше я имею модели которые нужно показать, но они не имеют своих связей
я могу конечно начать $model->news->photos — но это кучу запросов
Andrey Kushnarev
@andku83
Apr 06 13:24

@andku83
... дальше я имею модели которые нужно показать, но они не имеют своих связей

связь полученная однажды о объекта хранится пока ты ее не сбросишь, гадать на кофейной гуще я, да и другие, не буду(т), не хочешь ничего показывать - разбирайся сам

arman
@kzgzhn
Apr 06 13:48

@andku83 вот и я спрашиваю про "полученная однажды", а не про все остальное, там кучу связей и кода что совсем к данному вопросу не относится.
Я заказал домой ацать пар обуви, чтоб выбрать под себя что-то, теперь я хочу заказать отдельно для понравившейся обуви шнурки, Yii мне говорить идти на страницу заказа и там выбрать обувь которая мне понравилась и поставить галку с нужными шнурками, а все текущее что уже дома выкинуть, в том числе что мне понравилось. Либо заказывать каждый шнурок отдельно в отдельных посылках

Пример я уже показывал
ArModel::with(ArModel[] $models, 'relationName', function($q) {//..} )
примерно такое же наверно запускает Yii чтоб подгрузить вторым запросом связь другой модели, дальше он в свойства указывает результат по карте.

Кот Олигарха
@OligarchCat_twitter
Apr 06 14:28
ребяты, привет всем! как указать метод для обработки формы в файле средствами php?
Andrey Kushnarev
@andku83
Apr 06 14:28
@OligarchCat_twitter ничего не понял
Кот Олигарха
@OligarchCat_twitter
Apr 06 14:29
<form id="searchBox" action="filename.php/methodname" method="post">
blashchyk
@blashchyk
Apr 06 14:30
@OligarchCat_twitter if($_POST) {
} и поехали)))
Кот Олигарха
@OligarchCat_twitter
Apr 06 14:32
да ент понятно
мне нужно в файле метод указать, который будет форму обрабатывать
чтоб не рожать файлы дополнительно
Andrey Kushnarev
@andku83
Apr 06 14:33
$_GET['method']
des1roer
@des1roer
Apr 06 15:01
народ
хей
дайте конфиг апи плиз
des1roer
@des1roer
Apr 06 16:05
вроде пошло
а как сделать в апи чтобы при необходимости обновлялася запись, а если нет, то создавалась?
Andrey Kushnarev
@andku83
Apr 06 16:07
    public function findModel($id)
    {
        $model = Article::find()
            ->published()
            ->andWhere(['id' => (int)$id])
            ->one();
        if (!$model) {
            $model = new Article();
        }
        return $model;
    }
des1roer
@des1roer
Apr 06 16:37
[tq
а как подменить creaateAction
Andrey Kushnarev
@andku83
Apr 06 16:38
а свой написать пробовал?
des1roer
@des1roer
Apr 06 16:41
image.png
image.png
типа нет такого
image.png
почему так
я на basic
Andrey Kushnarev
@andku83
Apr 06 16:46
у тебя что-то из неймспейса app работает?
des1roer
@des1roer
Apr 06 16:46
да
image.png
image.png
конкретно мной созданный екшен не робит
Andrey Kushnarev
@andku83
Apr 06 16:48
где потерял v1/actionc ... ?
des1roer
@des1roer
Apr 06 16:49
см скрины-разве не все на месте?
Andrey Kushnarev
@andku83
Apr 06 16:49
в неймспейсе
des1roer
@des1roer
Apr 06 16:50
namespace app\modules\api\v1\actions;
teamviewer?
Andrey Kushnarev
@andku83
Apr 06 16:50
в своем экшене
des1roer
@des1roer
Apr 06 16:52
спс огрмомное
я думал ему по болту, главное указть неймспейс
Andrey Kushnarev
@andku83
Apr 06 16:53
кому по болту?!
des1roer
@des1roer
Apr 06 16:53
yii
Andrey Kushnarev
@andku83
Apr 06 16:53
это не yii - это php
des1roer
@des1roer
Apr 06 16:54
так пыхе то имеено и насрать откуда ты неймспейс кажешь
Andrey Kushnarev
@andku83
Apr 06 16:54
может пример покажешь где пыхе все равно?
des1roer
@des1roer
Apr 06 16:55
могу ошибаться
Andrey Kushnarev
@andku83
Apr 06 16:55
почитай про autoload