база данных — Craft CMS — Как включить поля актива в запрос ввода PHP?

Я пытаюсь выяснить, как вернуть поля актива в запросе ввода PHP. Также, если бы я мог научиться возвращать «настраиваемые поля» при возврате объекта, это было бы тоже здорово! Сейчас мне нужно указать asArray (), чтобы даже получить доступ к большинству моих «настраиваемых полей»

Как пример: у меня есть запись транспортного средства, в которой есть настраиваемое поле с дескриптором цены (числовое поле) и другое настраиваемое поле (поле актива) с дескриптором изображений. Когда я выполняю запрос без указания параметра asArray (), я не могу найти настраиваемые поля, включенные в результаты. Но если я укажу asArray (), то все они будут там, за исключением моего поля изображений, которое, я думаю, потому что это поле актива или возможно, потому что оно может быть коллекцией изображений? Как я могу убедиться, что все поля, связанные с записью, возвращены в моем запросе?

Вот несколько примеров запросов и соответствующих результатов:

PHP-запрос без asArray ():

$entry_query = Entry::find()
->section('inventory')
->all();

Возвращает:
введите описание изображения здесь

Результаты PHP-запросов с asArray ():

$entry_query = Entry::find()
->section('inventory')
->asArray();

Возвращает:
введите описание изображения здесь

Однако даже при указании сделать массив результатов результирующим, я все еще не могу понять, как включить поле ‘images’.

Мне трудно найти ответ в документации или на примере того, кто делает то же самое. Все примеры, которые я нахожу, для стороны шаблона в ветке

Спасибо!

0

Решение

Вот чем я закончил:

    $vehicles = array(); // empty container to hold our modified entries
// Lets Query our Inventory - all of it
/** @var array $entry_query   the name of our query to get our inventory - return a list of inventory after we execute query */
$entries = Entry::find()
->section('inventory')
->all();

foreach($entries as $entry) {
/*
* Let's get all our custom fields we want
* to include with our entries
*/
// Get our image field and add to result set - because it's an asset field this returns a query object
$ourimages = $entry->images->all(); // get all our images
$price = $entry->price;
$featured = $entry->featureThisVehicle;
$make = $entry->make;
$model = $entry->model;
$year = $entry->year;
$description = $entry->description;
$inventoryStatus = $entry->inventoryStatus;
$bodyStyle = $entry->bodyStyle;
$color = $entry->color;
$miles = $entry->miles;
$vin = $entry->vin;
$stkid = $entry->stkid;

// cast out entry object as an array - so we can add props to it
$entry = (array)$entry;

// add our custom fields to our newly casted entry array
$entry['images'] = $ourimages;
$entry['price'] = $price;
$entry['featured'] = $featured;
$entry['make'] = $make;
$entry['model'] = $model;
$entry['year'] = $year;
$entry['description'] = $description;
$entry['inventoryStatus'] = $inventoryStatus;
$entry['bodyStyle'] = $bodyStyle;
$entry['color'] = $color;
$entry['miles'] = $miles;
$entry['vin'] = $vin;
$entry['stkid'] = $stkid;

// Recast back to object just cause (not really necessary since we are json_encode'ing this)
$entry = (object)$entry;
array_push($vehicles, $entry);
}

return json_encode($vehicles);
0

Другие решения

Других решений пока нет …