【发布时间】:2016-05-27 22:36:34
【问题描述】:
在我的 Laravel 5.2 应用程序中,有以下模型层次结构:
//Model.php:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
abstract class MyModel extends Model {
public function getAllColumnsNames() {
...
}
//Article.php
namespace App\Models;
class Article extends MyModel {
...
}
然后在控制器中,有一个以$item为参数的函数,$item的类型是App\Models\Article:
//MyController.php
use App\Models\MyModel;
...
public function japi ($item) {
if (! $item instanceof MyModel) {
return [];
} else {
$columns = $item->getAllColumnNames();
}
}
最后一行抛出异常:
Call to undefined method Illuminate\Database\Query\Builder::getAllColumnNames()
我以为这个函数会继承自 MyModel 类,但实际上它是从 Builder 类调用的。
如何从控制器中的 MyModel 调用函数?
[编辑] 实际上,即使我将 getAllColumnNames() 函数从 MyModel 直接移动到 Articles 类,也会引发相同的异常。我被卡住了。
【问题讨论】: