There are a few tickets touching on this, but the solutions proposed aren't working and I'd like to share the use case:
I have a Table of Contents page that is outputting a set of entries based on an Entries field, in the order they appear in that field. When you click on an entry on that page, it loads on its own page.
At the bottom of the individual entry page, I have Prev/Next URLs, using:
{% set data = craft.entries.section('works').relatedTo(issue.contents).limit(null) %}
{% set prevEntry = entry.getPrev(data) %}
{% set nextEntry = entry.getNext(data) %}
The prev & next entries there, though, are based on a sort in the 'works' section, not the entries field.
I've tried this, per the documentation:
{% set entries = craft.entries(
{
relatedTo: { sourceElement: issue, field: "contents" },
order: "sortOrder",
limit: null
}
) %}
That gives me the following error. How can I sort .relatedTo
entries based on the source field's order?
Integrity constraint violation: 1052 Column 'sortOrder' in order clause is ambiguous. The SQL statement executed was: SELECT `elements`.`id`, `entries`.`sectionId`, `entries`.`typeId`, `entries`.`authorId`, `entries`.`postDate`, `entries`.`expiryDate`
FROM `craft_elements` `elements`
JOIN `craft_elements_i18n` `elements_i18n` ON elements_i18n.elementId = elements.id
JOIN `craft_content` `content` ON content.elementId = elements.id
LEFT JOIN `craft_relations` `sources1` ON (sources1.targetId = elements.id)
LEFT JOIN `craft_matrixblocks` `target_matrixblocks1` ON target_matrixblocks1.id = sources1.sourceId
JOIN `craft_entries` `entries` ON entries.id = elements.id
JOIN `craft_sections` `sections` ON sections.id = entries.sectionId
LEFT JOIN `craft_structures` `structures` ON structures.id = sections.structureId
LEFT JOIN `craft_structureelements` `structureelements` ON (structureelements.structureId = structures.id) AND (structureelements.elementId = entries.id)
WHERE (((((elements_i18n.locale = :locale) AND (content.locale = :locale)) AND (elements.archived = 0)) AND ((elements.enabled = 1) AND (elements_i18n.enabled = 1) AND (entries.postDate <= '2016-05-17 14:08:35') AND ((entries.expiryDate is null) OR (entries.expiryDate > '2016-05-17 14:08:35')))) AND (elements_i18n.enabled = 1)) AND ((target_matrixblocks1.ownerId=:target_matrixblocks1ownerId1) AND (target_matrixblocks1.fieldId = 15))
GROUP BY `elements`.`id`
ORDER BY `sortOrder`. Bound with :locale='en_us', :target_matrixblocks1ownerId1='6'