2016-08-08 17 views
1

Ich bin auf eine Situation gestoßen, in der die von meiner stored procedure erzeugten Spalten dynamisch sind. Ich möchte wissen, haben wir irgendeine Methode, um die Spaltennamen einer Ergebnismenge zu erhalten, wenn die von der gespeicherten Prozedur zurückgegebene Ergebnismenge in Laravel leer ist?Abrufen von Spaltennamen, wenn Ergebnismenge (gespeicherte Prozedur) leer ist (Laravel)

Ich kann problemlos auf Spalten durch Iterationen über die Ergebnismenge zugreifen, wenn sie nicht leer ist, aber gibt es irgendeine Methode, um auf die Spaltennamen zuzugreifen, wenn die Daten leer sind?

Das ist genau das, was ich meine.

$data = Schema::getColumnListing("call conflictReport(123,'2016-08-01 09:00:31','2016-08-01 09:00:31')"); 

Meine Prozedur benötigt 3 Parameter wie in den Parametern.

Wenn die Ergebnismenge leer ist, kann ich nicht auf die Spaltennamen zugreifen. Ich benutze getColumnListing von Laravel.

+0

Kann duplizieren http://StackOverflow.com/Questions/1853094/How-to-get-the-columns-names-along-with-resultset-in-php-mysql – 1000111

+0

'mysql_fetch_field'? –

+0

@MageshKumaar mit Laravel und Aufruf über gespeicherte Prozedur .. –

Antwort

1

So geht's direkt mit PDO. Mit Laravel sollten Sie in der Lage sein, die getPdo() Funktion Ihres MySQLConnection Objekts zu nutzen.

<?php 

$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', 'xxxxxxxx'); 

$stmt = $pdo->query('select * from mytable where false'); 
$colCount = $stmt->columnCount(); 
for ($col = 0; $col < $colCount; ++$col) { 
    print_r($stmt->getColumnMeta($col)); 
} 

I getestet und dies auch mit einer CALL Abfrage funktioniert:

$stmt = $pdo->query('call myproc()'); 

Grundsätzlich kann jede Anweisung mit einer Ergebnismenge hat Spaltenmetadaten.

Weitere Informationen finden Sie unter PDOStatement::getColumnMeta().

+0

aktualisiert die Frage im Grunde ich zugreifen gespeicherte Prozedur mit Laravel –

+0

Dies funktioniert, wenn Ihre Abfrage ist "rufen Sie myproc()' "auch. –

+0

verwenden wir dies -> $ data = Schema :: getColumnListing ("call conflictReport (123, '2016-08-01 09:00:31', '2016-08-01 09:00:31')"); in Laravel Prozedur ..did nicht funktionieren obwohl –