Jump to main content Jump to doc navigation

xPDO::getObject

Извлекает один экземпляр объекта по заданным критериям.

Критериями могут быть значения первичного ключа, массив значений первичного ключа (для нескольких объектов первичного ключа) или объект xPDOCriteria. Если параметр $ criterts не указан, класс не найден или объект не может быть найден по предоставленным критериям, возвращается значение null.

Синтаксис

API Docs: http://api.modx.com/xpdo/xPDO.html#getObject

xPDOObject|null getObject (string $className, [xPDOCriteria|array|str|int $criteria = null], [bool|int $cacheFlag = true])

Пример

Простейший пример (встроенные объекты)

Вы можете использовать getObject для извлечения ресурсов MODX (например, страницы) по ее идентификатору страницы:

$page = $modx->getObject('modResource', 555);
$output = $page->get('pagetitle');

xPDO против MODX Объект $modx расширяет xPDO, поэтому во многих ситуациях (например, внутри ваших фрагментов) вы можете использовать объект $modx, даже если в большинстве примеров на этой странице используется объект $xpdo.

Таким способом вы можете получить любой объект MODX, просто зная имя его объекта - обычно это просто вопрос добавления «мода» к знакомому имени объекта:

Распространенное имя Имя объекта
Page modResource (Примечаниt: Page - это всего лишь одно из проявлений modResource. Это также можно использовать для получения веб-ссылок, символических ссылок и статических ресурсов.)
Chunk modChunk
User modUser
Template modTemplate
Snippet modSnippet

Смотри core/model/schema/modx.mysql.schema.xml файл для полного определения всех объектов MODX.

Если вам нужно получить другие атрибуты для этих объектов (например, TV для страницы), то вам, возможно, придется посмотреть на getObjectGraph

Простейший пример (пользовательские объекты)

Самый простой пример - когда вы получаете объект по его первичному ключу.

Например. получить объект Box с идентификатором 134.

$box = $xpdo->getObject('Box', 134);

Возвращаясь в свою XML-схему, если ваш объект расширяет xPDOSimpleObject, столбец первичного ключа считается названным «id».

<object class="modPropertySet" table="property_set" extends="xPDOSimpleObject">

В противном случае ваша XML-схема сообщит вам, какой столбец является первичным ключом через узел index alias="PRIMARY", например,

<object class="MyObject" table="my_object" extends="xPDOObject">
    <field key="object_id" dbtype="int" precision="11" phptype="integer" null="false" index="pk"  generated="native" />
    <!-- ... stuff here ... -->
    <index alias="PRIMARY" name="PRIMARY" primary="true" unique="true">
        <column key="object_id" collation="A" null="false" />
    </index>
</object>

Более подробный простой пример

Вы также можете предоставить более подробные критерии для второго параметра, например,

$box = $xpdo->getObject('Box', array('id'=>134));

Другие столбцы

Вам не нужно извлекать данные только по первичному ключу, вы также можете искать по другим столбцам:

$box = $xpdo->getObject('Box', array('color'=>'blue'));

Комплексные критерии

Вы можете указать более сложные критерии выбора, используя xPDO query:

$query = $modx->newQuery('MyObject');
$query->where( array('wheels:>=' => 3) );
$myobj = $xpdo->getObject('MyObject', $query);

Смотрите также