首页 > 解决方案 > 无需查询即可获取模型表名

问题描述

我有一个 spatie 的包媒体库。我需要获取模型的表名。

我知道我可以这样做:

public function getPath(Media $media) {
     $name = (new $media->model())->getTable()
}

但这会创建一个新查询。我不需要在数据库上创建额外的查询。在表格媒体中,我有一列 a model_type,其中记录可以是这样的:App\ModelName. 也许我可以在没有查询的情况下获得模型的名称?

标签: phplaravel

解决方案


在 laravel 框架 github 中有一个答案: https ://github.com/laravel/framework/issues/1436 。因此,您似乎需要扩展 Media 模型。来自 github 的示例

class BaseModel extends Eloquent {

    public static function getTableName()
    {
        return with(new static)->getTable();
    }

}

class User extends BaseModel {

}


User::getTableName();

推荐阅读