我遇到过stored procedure
生成的列是动态的情况。我想知道,当Laravel中存储过程返回的结果集为空时,我们是否有任何方法来获取结果集的列名?
当结果集不为空时,我可以通过结果集上的迭代轻松访问列,但是当数据为空时,是否有任何方法可以访问列名?
这就是我的确切意思。
$data = Schema::getColumnListing("call conflictReport(123,'2016-08-01 09:00:31','2016-08-01 09:00:31')");
我的程序在参数中使用3个参数。
当结果集为空时,我无法访问列名。我正在使用Laravel的getColumnListing
。
答案 0 :(得分:1)
以下是如何直接使用PDO进行操作的方法。使用Laravel,您应该能够使用MySQLConnection
对象的getPdo()函数。
<?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));
}
我测试过,发现这也适用于CALL
查询:
$stmt = $pdo->query('call myproc()');
基本上任何带有结果集的语句都有列元数据。
有关详细信息,请参阅PDOStatement::getColumnMeta()。