0
votes

I have created a new extension with the extension builder which includes some tables and inline relations between some tables.

For reporting I need some queries where the selection condition is based on the related records.

Here I have difficulties to get the data (except doing raw queries, which seems wrong).

  1. attempt:
    do the query in the related records and extract the field which holds the uid of the parent records.
    Problem: in the query result is no field with the uid of the parent record (although it is in the database).
    This is understandable as there are no methods to get/set the relation. (But it does not change if I insert these methods.)
    Also in the children record there is no TCA definition of the relation field except:
        'parent' => [
            'config' => [
                'type' => 'passthrough',
            ],
        ],

which might be the reason the field can not be displayed in the record even if inserted in the showitem list.

  1. attempt:
    doing a join from the parent record.
    Here I have not found any examples how to build a join.
    There are other possibilities for a query, but the plainest seems this in the parent record repository:
public function getParentsByFilter($mainCondition,$subCondition) {
  $parentQuery = $this->createQuery();
  $parentQuery->matching(
     $parentQuery->logicalAnd(
        $parentQuery->equals('parent_field',$mainCondition)
//      $childQuery->equals('children_field',$subCondition)
     )
  );
// $parentQuery->joinTable('tx_myext_domain_model_children', ...)
  $parentQuery->setOrderings(['crdate'=> QueryInterface::ORDER_DESCENDING]);
  $parentQuery->getQuerySettings()->setRespectStoragePage(false);
  return $parentQuery ->execute();
}

Here I don't know how to join the children table.
I expect some methods like the commented lines, but have not found anything like it.

1

1 Answers

0
votes

What's about the same configuration like in the table sys_category?

enter image description here