Как запросить все связанные элементы в отношениях "многие ко многим", используя Pods API?

У меня есть два стручка:

  • course
  • participant

Стручок course имеет поле выбора для стручка participant. Поле является полем множественных отношений. Итак, каждый course пункт имеет несколько participants.

Я хочу найти все course предметы, где определенный participant относится.

Итак, я думаю, что SQL-запрос, такой как следующий, будет делать то, что я хочу:

SELECT DISTINCT `t`.* FROM `wp_pods_course` AS `t` WHERE t.id IN 
   (SELECT DISTINCT r.item_id FROM wp_podsrel AS r WHERE r.related_item_id = '42')

42 это идентификатор participant,

Я пытаюсь выяснить, как написать такой SQL-запрос, используя Pods API:

$pod = pods('course');
$participant_id = $participant->field('id');
$params['where'] = "t.id in (SELECT r.id FROM ??? WHERE ???)";
$pod->find($params);

Это правильный способ написать такой запрос?

1 ответ

Решение

Вы слишком усложняете вещи, Pods автоматически делает все соединения для вас с помощью одной из самых мощных функций - обхода поля.

Попробуй это:

$pod = pods( 'course' );

// I use ->id() because it's always the right ID field, no matter what pod type
$participant_id = $participant->id();

$params = array(
    'where' => 'participants.id = ' . (int) $participant_id
);

$pod->find( $params );

куда particpants это имя поля ваших отношений, id это идентификатор поля для этого связанного объекта.

Другие вопросы по тегам