当前位置: 首页 > 面试题库 >

laravel 4->获取列名

宦飞
2023-03-14
问题内容

如何使用Schema,DB或Eloquent在Laravel 4中获取数组或对象中表的列名。

似乎找不到可用的功能,也许您有一些自定义实现。

谢谢。


问题答案:

新答案

在我给出这个答案的时候, Laravel还没有直接做到这一点的方法 ,但是现在您可以:

$columns = Schema::getColumnListing('users');

旧答案

使用属性将不起作用,因为如果您这样做

$model = new ModelName;

您没有为该模型设置任何属性,您将一无所获。

然后仍然没有真正的选择,因此我不得不深入到数据库级别,这是我的BaseModel:

<?php

class BaseModel extends \Eloquent {

    public function getAllColumnsNames()
    {
        switch (DB::connection()->getConfig('driver')) {
            case 'pgsql':
                $query = "SELECT column_name FROM information_schema.columns WHERE table_name = '".$this->table."'";
                $column_name = 'column_name';
                $reverse = true;
                break;

            case 'mysql':
                $query = 'SHOW COLUMNS FROM '.$this->table;
                $column_name = 'Field';
                $reverse = false;
                break;

            case 'sqlsrv':
                $parts = explode('.', $this->table);
                $num = (count($parts) - 1);
                $table = $parts[$num];
                $query = "SELECT column_name FROM ".DB::connection()->getConfig('database').".INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'".$table."'";
                $column_name = 'column_name';
                $reverse = false;
                break;

            default: 
                $error = 'Database driver not supported: '.DB::connection()->getConfig('driver');
                throw new Exception($error);
                break;
        }

        $columns = array();

        foreach(DB::select($query) as $column)
        {
            $columns[] = $column->$column_name;
        }

        if($reverse)
        {
            $columns = array_reverse($columns);
        }

        return $columns;
    }

}

使用它来做:

$model = User::find(1);

dd( $model->getAllColumnsNames() );


 类似资料:
  • 我正在上传一个图像,并返回带有图像数据(如宽度、大小等)的json数组。 现在,这种创建方法只是通过laravel eloquent模型将新数据插入数据库。我想不出一种方法,插入数据,返回刚刚插入的数据的id,然后以某种方式合并json数组并将其与其他json数据一起返回?希望这是有意义的。

  • 问题内容: 我的桌子如下 输出表如下 我的查询就像: 我无法编写查询;我将如何获得最小列名而不是最小值?我将如何完成田野? 问题答案: 您可以使用一个表达式来做到这一点:

  • 问题内容: 我想将所有mysql表的col名称放入php数组中吗? 是否对此有疑问? 问题答案: 最好的方法是使用INFORMATION_SCHEMA元数据虚拟数据库。特别是INFORMATION_SCHEMA.COLUMNS表… 它非常强大,可以为您提供大量信息,而无需解析文本(例如列类型,列是否可为空,最大列大小,字符集等)… 哦,这是标准的SQL(这是MySQL的特定扩展名)… 有关表之间的

  • 问题内容: 我正在尝试获取已存储在SQL Server 2008 R2中的表的列名。 我已经尝试了一切,但似乎找不到解决方法。 现在这是我在C#中的代码 但这又给了我以下 有任何想法吗? 它显示标签,因为这是我的Web服务发送数据的方式。 问题答案: 您可以使用下面的查询来获取表的列名。下面的查询获取给定名称的用户表的所有列: 在您的代码中,它将如下所示:

  • 问题内容: 我在文档中找不到与此有关的任何信息,但是如何获得在SQLAlchemy中创建的表的列表? 我使用了类方法来创建表。 问题答案: 所有表都收集在SQLAlchemy MetaData对象的属性中。要获取这些表的名称列表: 如果使用声明性扩展,则可能不是您自己管理元数据。幸运的是,元数据仍然存在于基类中, 如果您试图弄清楚数据库中存在哪些表,甚至还没有告诉SQLAlchemy的表,那么可以

  • 问题内容: 目标 我有一个Pandas数据框,如下所示,具有多个列,并希望获取列的总数。 数据框 -: 我的尝试 : 我试图使用和获得列的总和: 这将导致以下错误: 预期产量 我期望输出如下: 或者,我想编辑一个包含总数的新标题: 问题答案: 您应该使用: 然后与配合使用,在这种情况下,索引应设置为与需要求和的特定列相同: 因为如果传递标量,则将填充所有行的值: 另有两个解决方案,请参见以下应用程