获取没有任何记录的模型的属性名称

时间:2018-04-30 16:12:50

标签: laravel eloquent

有没有办法可以为没有任何记录的模型获取所有属性名称?

例如,公司'App\Company'有姓名,地址和电子邮件地址。但是,目前数据库中没有存储公司记录。在不访问数据库中的任何现有记录的情况下,我希望返回数组

[
    0 => 'name',
    1 => 'address',
    2 => 'email_address'
]

我尝试了以下内容:

$class = 'App\Company';
return array_keys((new $class)->getAttributes());

但是这会返回一个空数组,因为这些字段都是空的。

有没有办法在没有在数据库中搜索现有记录的情况下获取这些内容?

2 个答案:

答案 0 :(得分:1)

您可以使用数据库外观来获取表元数据

 1   2   3   5
   <   <   <

您可以通过这种方式进行修补:

use Illuminate\Support\Facades\DB
...
DB::getSchemaBuilder()->getColumnListing('tableName'); //table name not model name

输出:

$ php artisan tinker
Illuminate\Support\Facades\DB::getSchemaBuilder()->getColumnListing('Users');

答案 1 :(得分:0)

您可以直接从数据库中获取属性。假设您的公司模型有一个名为companys的相应表或类似的表

$attributeArray = Schema::getColumnListing('companys'); 
dd($attributeArray);

将为您提供所需的输出。唯一的问题是它没有显示模型的任何自定义属性。