Laravel 在创建模型时扩展 Eloquent

Laravel extend Eloquent when creating model

在 Laravel 中创建基本模型时,我扩展了 Eloquent class 以便我的模型具有所有很棒的 Eloquent 功能。例如:

class Product extends \Eloquent {
    //class definition here
}

我一直在阅读 Laravel 框架源代码,但我不明白这个 Eloquent class 实际上来自哪里。我可以看到有一个 Illuminate\Database\Eloquent\Model class,它似乎具有我期望从我正在扩展的 Eloquent class 中获得的所有功能,但我自从我扩展 Eloquent 而不是 Illuminate\Database\Eloquent\Model.

以来,我对继承的实际工作方式感到困惑

这是如何工作的?

如果您查看文件 "config/app.php" 的内容,您会在文件底部找到一个 "aliases" 键。这就是引擎盖下所有魔法的作用。 Laravel 允许您为 classes 添加别名,您也可以将您的别名添加到 "config/app.php" 文件中,这样您就不必在代码中到处使用长而完全限定的名称。

如您所见,您要扩展的实际 class 是 "Illuminate\Database\Eloquent\Model",它是 "Eloquent" 的别名,因此您只需要扩展 "Eloquent"。