我有spatie的打包媒体库。我需要获取模型的表名。
我知道我可以做到:
public function getPath(Media $media) {
$name = (new $media->model())->getTable()
}
但这会创建一个新查询。我不需要在数据库上创建额外的查询。在表格媒体中,我有一列model_type
,其中记录可以是这样的:App\ModelName
。也许我无需查询就可以获取模型名称?
答案 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();