十月Cms静态如何获取模型的表名?

时间:2019-03-17 14:32:31

标签: laravel octobercms

我的插件代码:

DbContext.Database.BeginTransaction(IsolationLevel.Snapshot);

2 个答案:

答案 0 :(得分:0)

模式$table中的变量是受保护的成员,因此我们对此无能为力,但是我们可以通过在类[extend it]中添加public方法来简单地访问它。

  

在您的任何插件中,您都可以添加此代码段

use RainLab\User\Models\User as UserModel;

class Plugin extends PluginBase
{
    public function boot() {

      UserModel::extend(function($model) {
          $model->addDynamicMethod('getTableName', function() use ($model) {
              return $model->getTable();
          });
      });

     //....
  

现在您可以拨打电话

echo User::getTableName();

这类似于hack,但只有在您确实非常需要它的情况下,您才能执行类似的操作

如有疑问,请发表评论。

答案 1 :(得分:0)

您可以将静态方法添加为Model的辅助方法:

class MyModel extends Model
{

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

}

用法:MyModel::getTableName()

Source