Laravel框架中的继承

Bel*_*sen 0 php models laravel eloquent laravel-4

是否可以在laravel模型中使用继承?我解释:

是否可以执行一个扩展雄辩类的模型?

class A extends Eloquent
{
}

class B extends A
{
}
Run Code Online (Sandbox Code Playgroud)

e B也是2个不同的表,B有A_id作为外键和其他字段.怎么可能是B级的构造函数?它是一种可行的解决方案还是更好地使用hasOne关系?

没有每个A对象也是B对象.ES.用户和老师

谢谢

Mar*_*ean 7

我很难理解你的补充细节,但在回答实际问题时:是的,可以扩展Eloquent模型.

<?php
class User extends \Eloquent {

    protected $table = 'users';

}

class Student extends User {

    protected $table = 'students';

}
Run Code Online (Sandbox Code Playgroud)

但请注意,任何方法(例如关系,范围等)都将传播到扩展类.如果不想要的,然后创建一个基类,具有最小的你需要什么,并与您的特定类型则子分类,即Student,Administrator等等.

另一种方法是使用接口.所以,如果你知道模型需要相同的属性,但会说,有不同的关系; 然后你可以创建一个接口来添加这些约束:

<?php
interface UserInterface {

    public function getName();

}

class User extends \Eloquent implements UserInterface {

    protected $table = 'users';

    public function getName()
    {
        return $this->name;
    }

}

class Student extends \Eloquent implements UserInterface {

    protected $table = 'students';

    public function getName()
    {
        return $this->name;
    }

    public function courses()
    {
        return $this->belongsToMany('Course');
    }

    public function grades()
    {
        return $this->hasMany('Grade');
    }

}
Run Code Online (Sandbox Code Playgroud)