我有一个从Model扩展的模型,它的名字是IcerikRltCategory,我想静态使用getTable函数。但__callStatic函数不会触发任何内容。因为没有进入这个神奇的功能范围。
错误信息是:
1/1 ContentController.php第51行中的ErrorException: 非静态方法Illuminate \ Database \ Eloquent \ Model :: getTable()不应该静态调用,假设$ this来自不兼容的上下文
答案 0 :(得分:0)
getTable
方法需要模型对象的实例才能工作。该方法本身如下:
public function getTable()
{
if (isset($this->table)) return $this->table;
return str_replace('\\', '', snake_case(str_plural(class_basename($this))));
}
正如您所看到的,它使用$this
来访问属性,这意味着在对象实例给出的需求上下文中。因此静态调用该方法不会起作用:
IcerikRltCategory::getTable(); // this won't work
但是当你有一个实例时,它会:
$model = new IcerikRltCategory();
$model->getTable(); // this will work