Sto usando Propel 2. Sono oggetti idratanti attraverso i rapporti, in questo modo:E 'possibile rimuovere campi con * RECURSION * quando si usa toArray() in Propel?
$return = OrderQuery::create()
->joinWith('Customer')
->joinWith('Status')
->find()
->toArray(TableMap::TYPE_PHPNAME, true, [], true);
L'array risultante sarebbe simile a questa:
{
"Id": 1,
"CustomerId": 1,
"StatusId": 1,
"Initiated": "2016-01-01T01:01:01+00:00",
"Customer": {
"Id": 1,
"Forname": "Test",
"Surname": "Smith",
"Orders": [
"*RECURSION*"
]
}
"Status": {
"Id": 1,
"Title": "title 1",
"Priority": 1,
"Orders": [
"*RECURSION*"
]
},
}
Voglio rimuovere i campi in cui il il valore è *RECURSION*
. Ho provato a utilizzare il parametro $alreadyDumpedObjects
(3rd) su toArray()
ma questo non sembra essere d'aiuto. Potrei anche fare qualche forma di array walking con le chiamate unset()
, ma spero che ci sia un modo migliore, magari con un formattatore o qualcosa del genere?
Per i punti bonus, vorrei rimuovere le colonne che definiscono la relazione di chiave esterna. Ad esempio, sarebbe CustomerId
, ma resterebbe Customer
.
Sì, quando ho parlato di array walking intendevo usare unset: ora mi viene specificato più esplicitamente nella mia domanda. Ma mi piacerebbe ancora qualcosa di meglio, che non avrei bisogno di hard-code per colonne specifiche – LeonardChallis