Zum Inhalt springen

problem mit $query->getQuerySettings()->setEnableFieldsToBeIgnored

Erstellt am 24. März 2016 · 6 Antworten · letzte Antwort am 12. April 2016

Tags: Frage

npre ·

hallo,

ich möchte im frontend alle datensätze ausgeben, auch die, die auf "verbergen" sind. dazu habe ich im respoitory folgendes eingetragen:

public function findbUserAll($userId = NULL) {

		$query = $this->createQuery();
		#$query = parent::createQuery();
		$query->getQuerySettings()->setRespectStoragePage(FALSE);
		$query->getQuerySettings()->setEnableFieldsToBeIgnored(array('hidden'));
		#$query->getQuerySettings()->setRespectEnableFields(FALSE);
                $query->matching($query->equals('user', $userId));

		
		$result = $query->execute();
		return $result;
	
		

	}

leider werden die "hidden" datensätze nicht ausgegeben. hat jemand einen tipp für mich, woran es liegen könnte? habe typo3 7.6 im einsatz.

danke für eure hilfe!

lg
npre

aemka ·

Eigentlich ist der Code genau richtig, wenn man hier vergleicht: https://wiki.typo3.org/Default_Orderings_and_Query_Settings_in_Repository#Default_Orderings_and_Query_Settings_TYPO3_6.0_-_6.2_.28extbase_6.0_-_6.2.29 Dennoch würde ich mal die Änderungen in Version 7 checken, ob sich in dem Punkt was geändert hat oder hier ein Fehler vorliegt. Ebenso wäre es mal interessant im Install Tool in das Development Preset zu wechseln und absichtlich für einen SQL Fehler zu sorgen, damit dir mal das komplette SQL Query ausgegeben wird, dann kannst du schnell sehen, was eigentlich im SQL steht und wo ggf. das Problem ist.

aemka ·

Ach ja und falls es sich hier um fe_users handeln sollte - da gibt es keine Spalte "hidden", die heißt hier "disable".

npre ·

sodala ... 1 problem gelöst, aber 2. problem gefunden. es muss nämlich $query->getQuerySettings()->setIgnoreEnableFields(array('hidden')); heißen, dann funktioniert es.

ABER, ich habe datensätze, die per irre verknüpft sind. und die lassen sich nicht mit

$query->getQuerySettings()->setIgnoreEnableFields(array('hidden', 'feldname.hidden', 'tx_xxxxxx_domain_model_tabellenname.hidden'));

abfragen. hat jemand eine idee wie ich relationen auch einschließen kann?

lg
npre

aemka ·

Die Enablefields definieren nur die Sichtbarkeit des aktuellen Datensatzes, daher macht die Ausweitung auch Sichtbarkeiten von Kind-Relationen eh wenig Sinn.
Aber die kannst ja in den Query Settings des Repositorys der Kind-Relations-Datensätze ebenfalls $query->getQuerySettings()->setIgnoreEnableFields(array('hidden')); nutzen und darüber die Kindrelationen ziehen.

npre ·

danke für die antwort. aber leider weiß ich nicht, wie ich das für kindrelationen nutzen könnte? kannst du mir da einen hinweis geben, wo ich das einbauen müsste, danke!

aemka ·

tx_xxxxxx_domain_model_tabellenname muss doch eine auch eine Repo-Klasse haben. Dort kannst du wieder query settings ändern.