我试图从表 Teller
中获取所有列名功能:
public function getTableColumns($tables)
{
return DB::select(DB::raw('SELECT
COLUMN_NAME,
DATA_TYPE,
COLUMN_DEFAULT
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
table_name = `Teller`'));
}
答案 0 :(得分:23)
您只需执行此操作即可获取所有列名称...
public function getTableColumns($table)
{
return DB::getSchemaBuilder()->getColumnListing($table);
// OR
return Schema::getColumnListing($table);
}
答案 1 :(得分:8)
从模型获取表名
$product = new Product;
$table = $product->getTable();
print_r($table);

从表格
获取表格列名称
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
public function getTableColumns() {
return $this->getConnection()->getSchemaBuilder()->getColumnListing($this->getTable());
}
}
&#13;
现在,您将获得&#34;产品的所有专栏&#34;表格和如果你需要它在控制器,那么你可以通过以下方式得到它:
$product=new Product;
$columns=$product->getTableColumns();
print_r($columns);
&#13;
答案 2 :(得分:2)
从Laravel 6.x开始,此方法有效:
$db = DB::connection()->getPdo();
$rs = $db->query('SELECT * FROM Teller LIMIT 0');
for ($i = 0; $i < $rs->columnCount(); $i++) {
$col = $rs->getColumnMeta($i);
$columns[] = $col['name'];
}
print_r($columns);
这里的提示只是四处张扬(应该提供一种简单的方法来执行此操作,但显然不会),先获取PDO对象,然后use the answer from the same question for straight PDO access
当未通过将“ Teller”替换为databasename.Teller来选择数据库时,这也将起作用。
HTH,
-英尺
答案 3 :(得分:1)
您只需要从查询响应中提取键
array_keys(json_decode(json_encode($table[0]), true))
答案 4 :(得分:0)
如果有多个数据库连接,请尝试以下操作:
在您的php脚本顶部添加
use Illuminate\Support\Facades\Schema;
检索代码中的任何地方
具有数据库连接
$columns = Schema::Connection('business')->getColumnListing('users'); // 'business' is your database connection
echo "<pre>";
print_r($columns);
exit();
没有数据库连接
$columns = Schema::getColumnListing('users');
echo "<pre>";
print_r($columns);
exit();
答案 5 :(得分:0)
使用集合的模型的另一种方式。
collect(User::first())->keys();
答案 6 :(得分:0)
@Eduardo Wallace 方法最简单;只返回表中的第一个值,去掉离开键的值
$T1 = table_name::first();
$table_columns = array_keys(json_decode($T1, true));
如果你不需要所有的列,去掉不需要的列,只留下需要的列:
$needed_columns = array_diff($table_columns, ['unneeded_1', 'unneeded_2']);
你可以争论所使用的方法,反正对我来说最简单!
答案 7 :(得分:0)
$db = [];
$tables = DB::select('SHOW TABLES');
foreach ($tables as $key => $table) {
$name = $table->Tables_in_app;
$app[$name] = DB::getSchemaBuilder()->getColumnListing($name);
}
return $db;
答案 8 :(得分:-1)
你可以写一下:
public function getTableColumns($tables)
{
return DB::select(
DB::raw('SELECT * FROM `Teller`')
);
}
如果您拥有Teller
型号,也可以使用Teller::all();
<强>更新强>
要获取所有列名称,您可以运行SHOW FIELDS Teller
答案 9 :(得分:-1)
从表中获取所有原始数据:
$users = DB::table('users')->get();
此方法将直接返回列的值:
$email = DB::table('users')->where('name', 'John')->value('email');
参见:
答案 10 :(得分:-1)
您可以使用此
DB::table('table_name')->get();