如何使用 Eloquent 模型获取多个表列名

Posted

技术标签:

【中文标题】如何使用 Eloquent 模型获取多个表列名【英文标题】:How can i get multiple table column name using Eloquent model 【发布时间】:2020-01-06 00:20:03 【问题描述】:

我在使用 eloquent 模型获取多个表列名称时遇到问题

示例:我有两个表 1)User 2)Posts

1)User Iam 能够获取用户的所有列名称

class User extends Eloquent 

    public function getTableColumns() 
        return $this->getConnection()->getSchemaBuilder()->getColumnListing($this->getTable());
    


但我想要结合两个模型,即用户和帖子模式,并使用雄辩的模式获取所有列名

【问题讨论】:

【参考方案1】:

首先创建用户和帖子模态关系这样

User.php模态类

public function post() 
   return $this->hasMany(Post::class);


public function getTableColumns() 
       return array_merge(
            $this->getConnection()->getSchemaBuilder()->getColumnListing($this->getTable()), //user modal column
            $this->post()->getTableColumns()   //post modal column
       );

第二在 Post.php 模态类

public function scopeGetTableColumns() 
        return $this->getConnection()->getSchemaBuilder()->getColumnListing($this->getTable());
 

第三现在打开你的终端并运行:

 php artisan tinker 


(new \App\User)->getTableColumns(); 

您将使用关系获得两个表列..

其他明智的只是在 User.php 类函数中传递表名

public function getTableColumns($tableName = 'posts') 
       return array_merge(
            $this->getConnection()->getSchemaBuilder()->getColumnListing($this->getTable()), //user modal column
            $this->getConnection()->getSchemaBuilder()->getColumnListing($tableName)   //post modal column
       );

【讨论】:

以上是关于如何使用 Eloquent 模型获取多个表列名的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Eloquent:如何从多个表中进行选择

Laravel Eloquent:如何从连接表中仅获取某些列

如何查询多个表以获取表具有相同列名的记录

Laravel Eloquent 序列化:如何重命名属性?

如何在 Laravel 中定义 Eloquent 关系

Laravel Eloquent 模型使用多个表合并为一个(没有单独的模型)