Получить данные из другой таблицы

prntscr.com/dfxcw6
У меня есть таблица из которой я вывожу данные(на скрине правая)
$q=$modx->newQuery('TicketComment');

$q->sortby('createdon', 'desc');
$q->select(array(
        'id',
));
$q->prepare();
$q->stmt->execute();
$res = $q->stmt->fetchAll(PDO::FETCH_ASSOC);

foreach ($res as $k=>$v) {
  echo '<pre>';
    print_r($v);
    echo '</pre>';
}
и вторая таблица(на скрине левая) из которой я хочу получить данные из поля resource у правой таблицы совпадают thread из левой таблицы с id, как можно реализовать такое? и реально ли вообще?
stas
06 декабря 2016, 08:00
modx.pro
1
2 881
0

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

    stas
    06 декабря 2016, 11:52
    0
    да немогу разобраться блин с этими джоинами
    $q->leftJoin('TicketThread', 'TicketThread',array('TicketComment.thread'=>'TicketThread.id'));
    что не так?
      Алексей Ерохин
      06 декабря 2016, 12:03
      +1
      в select укажите поля с алиасами таблиц
      а так вроде все верно
        stas
        06 декабря 2016, 12:05
        0
        $q=$modx->newQuery('TicketComment');
        $q->leftJoin('TicketThread', 'TicketThread',array('TicketComment.thread'=>'TicketThread.id'));
        
        $q->sortby('createdon', 'desc');
        $q->select(array(
                'TicketComment.id',
        ));
        $q->prepare();
        $q->stmt->execute();
        $res = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
        
        foreach ($res as $k=>$v) {
          echo '<pre>';
            print_r($v);
            echo '</pre>';
        }
        вот такое нифига не выводит
          Алексей Ерохин
          06 декабря 2016, 12:53
          +1
          В sortby тоже алиасы нужны
            stas
            06 декабря 2016, 12:58
            0
            Так вывод есть
            $q=$modx->newQuery('TicketComment');
            $q->leftJoin('TicketThread', 'TicketThread',array('TicketComment.thread'=>'TicketThread.id'));
            // $q->leftJoin('TicketThread', 'thread', 'TicketComment.id = thread.id');
            
            $q->sortby('TicketComment.createdon', 'desc');
            $q->select(array(
                    'TicketComment.id',
                    'TicketComment.thread',
                    'TicketThread.resource'
            ));
            $q->prepare();
            $q->stmt->execute();
            $res = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
            
            foreach ($res as $k=>$v) {
              echo '<pre>';
              print_r($v);
              echo '</pre>';
            }
            а как теперь вывести информацию из 2 таблицы? если выводить так то TicketThread.resource выводит пустоту
              Алексей Ерохин
              06 декабря 2016, 13:18
              +1
              После
              $q->prepare();
              можно вывести запрос и посмотреть, что получается
              echo $q->toSQL();
              Вообщем надо так писать:
              $q->leftJoin('TicketThread', 'TicketThread',array('TicketThread.id = TicketComment.thread'));
              Во второй строке у вас верно было.
                stas
                06 декабря 2016, 13:23
                0
                ураааааааааааааа, спасибо вам за пол дня я наконец сделал это!!!
                На спине татуировку сделаю с этим кодом
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    8