[Erledigt] Unknown column 'node.Array'
am 18.12.2008 - 15:52 Uhr in
Grüß euch,
ich habe ein Problem, bei dem ich nicht mehr weiterkomme. Ich habe in Drupal 6.8 ein eigenes Modul realisiert, das einen zusätzlichen Node-Typ definiert, nennen wir es einfach einmal tender.
Um diverse Abfragen mit Views zu ermöglichen, habe ich, wie in der Views-API angegeben, folgenden Code integriert:
1.) in meinem modul tender.module eine API-Funktion definiert
function tender_views_api() {
return array('api' => 2.000);
}
2.) eine tender.views.inc erstellt in der ich die Felder und vor allem die Joins definiere
function tender_views_data() {
$moduletable = 'tender';
$primary_key = 'tid';
$table_display_name = 'tender';
$data[$moduletable]['table']['group'] = t('Tender');
$data[$moduletable]['table']['join'] = array(
'node' => array(
'left_field' => 'vid',
'field' => $primary_key,
),
);
$data[$moduletable][$primary_key] = array(
'title' => t('Tid'),
'help' => t('The ID of the tender'),
'relationship' => array(
'base' => 'node',
'field' => $primary_key,
'handler' => 'views_handler_relationship',
'label' => t('Tender'),
),
);
$data[$moduletable]['typ'] = array(
'title' => t('Type'),
'help' => t('Typ'),
'field' => array(
'handler' => 'views_handler_field',
'click sortable' => TRUE,
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'filter' => array(
'handler' => 'views_handler_filter_equality',
),
'argument' => array(
'handler' => 'views_handler_argument',
),
);
Das Feld 'Typ' wird nun in der Views-UI zur Auswahl angeboten.
Ich bekomme nun jedesmal eine user warning wie im Betreff angerissen und der JOIN funktioniert natürlich nicht. Hier die gesamte Fehlermeldung inklusive SQL-Statement.
user warning: Unknown column 'node.Array' in 'on clause' query: SELECT node.nid AS nid, tender.typ AS tender_typ, node.title AS node_title FROM node node LEFT JOIN tender tender ON node.Array = tender.Array LIMIT 0, 30 in /sites/all/modules/views/includes/view.inc on line 723.
Ich verwende Drupal 6.8, Views 6.x-2.1
Ich hoffe auf eure Hilfe.
Vielen Dank im Voraus
- Anmelden oder Registrieren um Kommentare zu schreiben
Tippfehler: "Array" groß?
am 08.01.2009 - 08:51 Uhr
Hallo,
was mich auf den ersten Blick etwas stutzig macht, ist das groß geschriebene "Array". Wo kommt das her und müsste das nicht klein geschrieben sein?
Ist erstmal nur eine erste Vermutung.
hdh
Frank
Gruß
Frank
Bitte Erledigtes im Betreff des ersten Postings als [gelöst] markieren. Danke!
Array vs array
am 08.01.2009 - 09:14 Uhr
Moin!
Nö, das ist nur, weil Drupal beim zusammenbauen des SQL-Statements anstelle eines Strings ein Array an die Position einfügt. Wenn Du spassenshalber mal
<?php
$test = array('test' => 'test');
print $test;
?>
machst, erhälst Du auch
"Array"
.Zum Problem von xurubo93:
es sieht so aus, als wenn die Definition des Joins irgendwie nicht ganz richtig ist. Drupal müsste da eigentlich "tid" einfügen, erhält jedoch ein Array als Definition des Feldes.
Allerdings kann ich an der Definition nichts Falsches erkennen.
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Unknown column 'node.Array' (solved)
am 08.01.2009 - 10:56 Uhr
Erstmal vielen Dank für eure Antworten,
ich habe zwischenzeitlich folgenden Workaround dafür gefunden, nachdem ich etwas im Sourcecode im Views-Verzeichnis geschmökert habe. (Ich hab das ganze aus der poll.views.inc)
Analog dazu hab ich den 'join' so definiert:
$moduletable = 'tender';
$primary_key = 'tid';
$data[$moduletable]['table']['join'] = array(
'node' => array(
'arguments' => array($moduletable, 'node', 'vid', $primary_key),
),
);
Damit blieben die beschriebenen Fehlermeldungen aus!
Mit dem Update auf die Views-Version 2.2 wurde offensichtlich dieser Fehler behoben, weil jetzt auch die Methode funktioniert, die in der Doku steht.
Vielen Dank
Peter