Odkaz na jinou tabulku pomocí sloupce, který není první v tabulce

ForestCZE
Člen | 209
+
0
-

Ahoj, mám nešťastně navrženou strukturu sloupců v databázi. Nemohu to překopat, protože by to znamenalo přepsat několik desítek skriptů a navíc k tomu ani nejsem oprávněn. Mám pouze za úkol pracovat s tím, co je.

Mám dvě tabulky users a characters

Vytahuji si ve foreachi všechno z tabulky users a v tom cyklu potřebuji vytáhnout id z té druhé tabulky characters na základě stejné hodnoty ve sloupci identifier.

Takže jsem udělal něco:

{snippet persons}
    {ifset $persons}
        {foreach $persons as $person}
            <a href="#">
                <div class="record">
                    <i class="fas fa-user"></i> {$person->firstname} {$person->lastname}<br>
                    <i class="fas fa-calendar"></i> {$person->dateofbirth}<br>
                    {$person->ref('characters', 'identifier')->id} {* Zde chci získat id z tabulky characters *}
                </div>
            </a>
        {/foreach}
    {/ifset}
{/snippet}

Problém je, že se mi to Nette automaticky snaží „párovat“ a vytáhnout na základě sloupce id a ne identifier, takže to query vypadá takto:

SELECT `id`
FROM `characters`
WHERE (`id` IN ('Char1:110000103e184f2', 'Char1:110000107a6c5a4', 'Char1:1100001134a7cba', 'Char1:110000114e4cc4e', 'Char1:11000011545506a', 'Char1:1100001174be32c', 'Char1:11000011bf6164c', 'Char1:110000134a0fc6f'))

A já potřebuji aby to vypadalo takto:

SELECT `id`
FROM `characters`
WHERE (`identifier` IN ('Char1:110000103e184f2', 'Char1:110000107a6c5a4', 'Char1:1100001134a7cba', 'Char1:110000114e4cc4e', 'Char1:11000011545506a', 'Char1:1100001174be32c', 'Char1:11000011bf6164c', 'Char1:110000134a0fc6f'))

Dá se to nějak individualně upravit? Mohu popřípadě nastavit nějakou referenci, ale nemohu změnit názvy sloupců. Jak z toho ven?

Editoval ForestCZE (27. 8. 2021 5:34)

Šaman
Člen | 2663
+
+2
-

Od boku bych řekl, že na tohle si budeš muset napsat vlastní query. Nejen, že identifier v tabulce characters není cizí klíč, ale dokonce ho chceš porovnávat se sloupcem identifier v tabulce user, nikoliv s jeho id.