有没有办法可以为没有任何记录的模型获取所有属性名称?
例如,公司'App\Company'
有姓名,地址和电子邮件地址。但是,目前数据库中没有存储公司记录。在不访问数据库中的任何现有记录的情况下,我希望返回数组
[
0 => 'name',
1 => 'address',
2 => 'email_address'
]
我尝试了以下内容:
$class = 'App\Company';
return array_keys((new $class)->getAttributes());
但是这会返回一个空数组,因为这些字段都是空的。
有没有办法在没有在数据库中搜索现有记录的情况下获取这些内容?
答案 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);
将为您提供所需的输出。唯一的问题是它没有显示模型的任何自定义属性。