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"。
在 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"。