開箱即用,laravel 5.2帶有幾個ORM類。最值得注意的是,其中之一是用戶ORM類。大多數的ORM模型,必須擴展Illuminate\Database\Eloquent\Model
,這看起來是這樣的:laravel User.php ORM是否必須擴展Illuminate Foundation Auth User?功能可以通過特質引入嗎?
use Illuminate\Database\Eloquent\Model;
class Articles extends Model {
...
然而,用戶模型必須擴展Illuminate\Foundation\Auth\User
,如果你想使用任何的身份驗證功能。這通常被視爲像下面這樣:
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable {
...
然而,我所有的ORM文件擴展自定義的ORM類,(其中包含我已經寫了一些默認的查詢範圍界定方法等非常有用的東西),然後,反過來延伸Illuminate \ Database \ Eloquent \ Model。
換句話說所以,我想有:
Illuminate\Database\Eloquent\Model
App\Klass\OrmRoot\MyCoolSubClass extends Illuminate\Database\Eloquent\Model
App\Klass\Orm\User extends MyCoolSubClass
但我不得不有:
Illuminate\Database\Eloquent\Model
App\Klass\OrmRoot\MyCoolSubClass extends Illuminate\Database\Eloquent\Model
App\Klass\Orm\User extends Illuminate\Foundation\Auth\User
由於PHP不支持polymorhpic繼承,說明其時我的班User.php ORM文件擴展後,我必須在用戶ORM類(可笑)內的自定義基類ORM類中複製所有方法,或者不讓用戶ORM類具有用戶驗證功能。兩者似乎都不可行。
是否有任何其他方式在User.php ORM文件中包含Authenticable功能?也許是一個特質?似乎沒有關於此使用模式的任何文檔。