无需查询即可获取模型表名称

时间:2019-04-19 08:09:16

标签: php laravel

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

我知道我可以做到:

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

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

3 个答案:

答案 0 :(得分:0)

我不认为“ new model()”在数据库上创建查询,它只是生成模型类的新对象实例。我不是很了解该库,但是鉴于它是Spatie库,它的功能可能与Eloquent的功能非常相似,但具有相同的行为。

答案 1 :(得分:0)

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

class BaseModel extends Eloquent {

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

}

class User extends BaseModel {

}


User::getTableName();

答案 2 :(得分:0)

功能更改

这段代码应在模型中和模型范围内使用

with(new static))->getTable();