QCubed - объединяет таблицы в несколько столбцов

Наша компания унаследовала приложение, используя PHP-фреймворк Qcubed. Одной из особенностей этой платформы является метод запросов QQuery. Мы не смогли определить, возможно ли создать соединение между двумя таблицами в двух столбцах с помощью QQuery.

Есть ли еще разработчики QCubed?

1 ответ

Решение

Есть ли еще разработчики QCubed? -> Да, их много. Большинство действий можно найти на GitHub

https://github.com/qcubed/qcubed

Объединения: Самое интересное в QQuery состоит в том, что он автоматически объединяет таблицы, когда между таблицами установлены правильные внешние ключи. На странице примеров есть масса информации об этом, проверьте это:

http://qcu.be/examples/index.php

Дополнительный совет: постарайтесь определить свои объединения, прежде чем загружать их. Qcubed автоматически выполнит соединение, когда запрашивается связанный объект, но лучше расширить его заранее.

Быстрый пример:

//loads a Person object into memory
//select * from person where id = 1;
$objPerson = Person::Load(1); 
echo $objPerson->Name . ' lives in ' . $objPerson->Town->Name;//will cause a query in the style "select * from town where id=x;"

//loads a Person object into memory, and joins the Town table.
//select * from person LEFT JOIN town on town.id = person.town_id where id = 1;
$objPerson = Person::Load(1, QQ::Clause(QQ::Expand(QQN::Person()->Town))); 
echo $objPerson->Name . ' lives in ' . $objPerson->Town->Name;//no extra query, town was already joined by the expand.

Оба вернут одни и те же данные, но последний более эффективен.

Чтобы ответить на вопрос о том, чтобы иметь 2 столбца в качестве основного: я не уверен на 100%, я никогда не использовал QCubed таким образом. Однако, проверьте http://qcu.be/examples/vendor/qcubed/framework/assets/php/examples/code_generator/primary_keys.php котором упоминается:

QCubed также предлагает некоторую поддержку для таблиц, для которых определены первичные ключи из нескольких столбцов. Для таблиц с первичными ключами из нескольких столбцов QCubed полностью сгенерирует сам объект. Но обратите внимание, что вы не сможете использовать этот сгенерированный объект как связанный объект для другой таблицы (другими словами, QCubed не поддерживает многостолбцовые внешние ключи). Однако со всеми сгенерированными методами Load в этих объектах все еще можно полностью разработать приложение с таблицами, использующими многоколонные внешние ключи. По сути, всякий раз, когда вы хотите получить доступ к связанному объекту через внешний столбец с несколькими столбцами, вы можете просто вызвать метод Load этого объекта напрямую, чтобы получить этот объект.

Проверьте файл codegen.xml в вашей локальной установке, если вы хотите определить отношения без внешних ключей.

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