如何使用 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 模型获取多个表列名的主要内容,如果未能解决你的问题,请参考以下文章