Esiste Un Modo Per Unire I Risultati Di Due Search() ?

Ho un pezzo di codice che esegue due search, con due distinti criteri.

Esiste il modo per unirne i risultati ?

Ho provato array_merge, array_merge_recursive, etc… ma non funzionano, perchè i risultati del metodo search() non è un array

Mmmm potrebbe essere poco performante, ma potresti fare un foreach "manuale" dei due risultati e creare uno nuovo. Potresti anche creare una cache dei risultati in modo tale da velocizzare le ricerche successive.

Se sei in vena di sperimentazioni, potresti creare una vista, e creare un model su quella vista ed usare una unica search, ma dipende da che search devi realizzare.

Argh … dato che per fortuna è solo un report ‘errori’, per cui ci si basa sul fatto che vengano tenuti limitati, abbbiamo scelto di fare la schifezza di fare due findAll(), che danno degli array come risultato, e unirli (+), quindi abbiamo creato un carraydataprovider disabilitando però la paginazione … amen …

Penso che questo faccia al caso tuo:

http://www.yiiframework.com/doc/api/1.1/CDbCriteria#mergeWith-detail

uhm, no … questo crea una unica query con due condizioni diverse, io devo eseguire due query separatamente, unirne i risultati e trovare il modo di ordinarle e paginarle come fossero una unica cosa …

Quindi devi fare una UNION query?

Se non basta il “CDbCriteria.MergeWith” con “OR” come parametro, potresti evitare completamente il CDbCriteria e generare il recordset con “CSqlDataProvider” scrivendo tu l’Ql completo: http://www.yiiframework.com/doc/api/1.1/CSqlDataProvider

Se ne è parlato anche qui: http://www.yiiframework.com/forum/index.php/topic/19074-union-relation/page__p__198163__hl__union+criteria

SqlDataProvider sembra proprio fare al caso mio ! Ci darò una occhiata approfondita, grazie

Interessante, se vuoi/puoi, quando hai terminato potresti scrivere un wiki per tutta la community. La cosa non sembra essere banale ed è senz’altro utile.