MODX 3 и migx

создал таблицу с помощью MIGX, создаются они там по новому
делаю вывод
{$_modx->runSnippet('!pdoPage', [
                'element' => 'getPayments',
                'class' => 'HistoryPayment\Model\Payment',
                'tpl' => '',
                ])}
getPayments
<?php
$path = MODX_CORE_PATH . 'components/pdotools/model/pdotools/';
$pdoFetch = $modx->getService('pdofetch','pdoFetch', $path, $scriptProperties);
$pdoFetch->setConfig($scriptProperties);
return $pdoFetch->run();
показывает
Array
(
    [id] => 1
    [user] => 1
    [kurs] => 0
    [idx] => 1
    [link] => 
)
все норм, тепрб хочу пременить leftJoin
{$_modx->runSnippet('!pdoPage', [
                'element' => 'getPayments',
                'class' => 'HistoryPayment\Model\Payment',
                'tpl' => '',
'leftJoin' => '{
                "Profile" : {
                "class" : "modUserProfile",
                "on" : "HistoryPayment\Model\Payment.user = Profile.id"
                }
                }'
                'select' => '{
                "HistoryPayment\Model\Payment": "*",
                "Profile": "Profile.username as name"
                }'
                ])}
итог
Array
(
    [Payment_id] => 1
    [Payment_user] => 1
    [Payment_kurs] => 0
    [idx] => 1
    [link] => 
)
Вопрос как джойнить чтобы вывелся username пользователя?
vit
vit
14 января 2024, 18:54
modx.pro
330
0

Комментарии: 12

Володя
14 января 2024, 19:06
0
    vit
    vit
    14 января 2024, 19:33
    0
    изменил, все тоже самое, где еще может быть проблема?
    {$_modx->runSnippet('!pdoPage', [
                    'element' => 'getPayments',
                    'class' => 'HistoryPayment\Model\Payment',
                    'tpl' => '',
    'leftJoin' => '{
                    "Profile" : {
                    "class" : "modUserProfile",
                    "on" : "HistoryPayment\Model\Payment.user = Profile.internalKey"
                    }
                    }'
                    'select' => '{
                    "HistoryPayment\Model\Payment": "*",
                    "Profile": "Profile.fullname as name"
                    }'
                    ])}
      Володя
      14 января 2024, 19:37
      0
      ShowLog в помощь.
        vit
        vit
        14 января 2024, 19:57
        0
        а в fednom он не работает?
        {$_modx->runSnippet('!pdoPage', [
                        'element' => 'getPayments',
                        'class' => 'HistoryPayment\Model\Payment',
                        'tpl' => '',
        'leftJoin' => '{
                        "Profile" : {
                        "class" : "modUserProfile",
                        "on" : "HistoryPayment\Model\Payment.user = Profile.internalKey"
                        }
                        }'
                        'select' => '{
                        "HistoryPayment\Model\Payment": "*",
                        "Profile": "Profile.fullname as name"
                        }'
                        'showLog' => '1',
                        ])}
        не выводит лог на экран
        или где логи будут?
          Володя
          14 января 2024, 20:08
          +1
          Тебе нужно добавить вывод логов в сниппет getPayments
          Возьми любой сниппет из пакета minishop и посмотри как там вывод лога добавлен.
            vit
            vit
            08 февраля 2024, 02:05
            0
            переделал все, сделал в MIGX CheckPoint
            <?xml version="1.0" encoding="UTF-8"?>
            <model package="CheckPoint\Model\" baseClass="xPDOObject" platform="mysql" defaultEngine="InnoDB" version="3.0">
            	<object class="Check" table="check_point" extends="xPDO\Om\xPDOSimpleObject">
            		<field key="master" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="true" />
            		<field key="date" dbtype="date" phptype="date" null="true" />
            		<field key="start" dbtype="time" phptype="string" null="false" />
            		<field key="end" dbtype="time" phptype="string" null="true" />
            		<field key="visitorId" dbtype="varchar" precision="255" phptype="string" null="true" />
            	</object>
            </model>
            в master хранится значение из Fax пользователя
            запускаю
            [[!pdoPage?
              &class=`CheckPoint\Model\Check`
              &tpl=``
              &element=`getChecks`
              &leftJoin=`{
                 "CreatedBy": {
                  "class": "modUserProfile",
                  "on": "Check.master = CreatedBy.fax"
                }
              }`
              &select=`{
               "CheckPoint\Model\Check": "*",
                    "CreatedBy": "CreatedBy.fullname as name"
              }`
                &showLog =`1`
            
            ]]
            [2024-02-08 02:02:12] (INFO @ /home/users/9/9516432741/domains/r.site.ru/core/cache/includes/elements/modx/revolution/modsnippet/32.include.cache.php: 15) Отладочный лог: Начало выполнения сниппета getChecks Нет отладочных логов.
            Array
            (
            [Check_id] => 1
            [Check_master] => 12
            [Check_date] => 2024-01-12
            [Check_start] => 10:00:00
            [Check_end] => 20:00:00
            [Check_visitorId] => 121212121
            [idx] => 1
            [link] =>
            )

            Все ошибки по логам исправил, но поле fullname не берется
            помогите пожалуйста
              Петропавловский Артем
              08 февраля 2024, 06:29
              0
              Думаю, в leftJoin так должно быть:
              "on": "Check.master = CreatedBy.id"
                Володя
                08 февраля 2024, 06:54
                +1
                Выражение в select должно быть корректной json строкой.
                  vit
                  vit
                  08 февраля 2024, 09:01
                  0
                  А что в select не так? не понимаю у меня в modx2 идентичный код стоит только class по старому записан и все работает
                    Володя
                    08 февраля 2024, 09:07
                    +2
                      vit
                      vit
                      08 февраля 2024, 09:37
                      +1
                      Спасибо огромное
                      &select=`{
                         "CheckPoint\\Model\\Check": "*",
                              "CreatedBy": "CreatedBy.fullname as name"
                        }`
                        Володя
                        08 февраля 2024, 09:39
                        +1
                        Да пожалуйста. Будьте внимательней при написании кода и вопров будет меньше.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    12