2016-09-30 3 views
1

Ich habe eine Bestellungstabelle gibt es mehr als 30 Spalten. Ich möchte alle Spalte außer attribute Spalte aus meiner orders Tabelle zeigen.Wählen Sie alle Spalten außer einer Spalte in CakePHP?

Wir alle wissen, dass alle Spalten für bestimmte ID aus einer Tabelle auswählen, wir

$data = $this->Order->find('first', array('conditions'=>array('Order.id'=>1))); 

Können Sie mir bitte sagen können, wie Abfrage in CakePHP 2.x zu schreiben?

Antwort

2

Ich bezweifle, dass Sie viel gewinnen werden, indem Sie die Spalte von Ihrer Abfrage ausschließen. Wenn Sie das wirklich tun müssen, dann können Sie die model's schema und dann die Spalte aus, dass entfernen und dann mit den verbleibenden Spalten in Ihrer find() durch die Felder definieren Sie die von der Abfrage zurückgegeben werden sollen: -

// Get the model’s schema. 
$schema = $this->Order->schema(); 
// Remove the `attribute` column from the schema. 
unset($schema['attribute']); 
// Determine the remaining columns from the schema. 
$cols = array_keys($schema); 

// Now call your query specifying the fields you want back using the 
// columns we’ve just determined. 
$data = $this->Order->find('first', 
    array(
     'fields' => $cols, 
     'conditions' => array('Order.id' => 1) 
    ) 
); 
+0

Ok. Lass mich deine Antwort überprüfen – Chinmay235

1

Sie sollten Verwenden Sie getColumnTypes() hier:

$fields = array_keys($this->Order->getColumnTypes()); /* Returns an associative array of field names and column types*/ 
$key = array_search('attribute', $fields);    /* Search the key having attribute field */ 
unset($fields[$key]);   /* Remove the key value pair corresponding to attribute */ 
$this->Order->find('all', array('fields' => $fields)); /* Apply search specifying the fields */ 
Verwandte Themen