在 Laravel 5 中 Eloquent 模型继承的最佳方式?
Best way for Eloquent Model inheritance in Laravel 5?
我有一个 Laravel 项目,我正在使用 Eloquent 作为模型。
假设我有三个相关表:
User
Demographics
Roles
我希望我的用户模型基于外键作为一对一关系继承 Demographics
和 Roles
。
我只是在寻找一些关于什么可能是最有效/优雅/最安全/高性能/最干净的方法来完成此任务的反馈。
所以您只是在寻找基本关系并急于加载这些关系。
试试这个:
class User extends Model
{
public function demographic()
{
return $this->hasOne('App\Demographic');
}
public function role()
{
return $this->hasOne('App\Role');
}
}
class Demographic extends Model
{
public function user()
{
return $this->belongsTo('App\User');
}
}
class Role extends Model
{
public function user()
{
return $this->belongsTo('App\User');
}
}
然后访问具有所有关系的用户:
$user = User::with(['demographic', 'role'])->find(1);
var_dump($user->demographic); // returns the related Demographic model
var_dump($user->role); // returns the related Role model
我有一个 Laravel 项目,我正在使用 Eloquent 作为模型。
假设我有三个相关表:
User
Demographics
Roles
我希望我的用户模型基于外键作为一对一关系继承 Demographics
和 Roles
。
我只是在寻找一些关于什么可能是最有效/优雅/最安全/高性能/最干净的方法来完成此任务的反馈。
所以您只是在寻找基本关系并急于加载这些关系。
试试这个:
class User extends Model
{
public function demographic()
{
return $this->hasOne('App\Demographic');
}
public function role()
{
return $this->hasOne('App\Role');
}
}
class Demographic extends Model
{
public function user()
{
return $this->belongsTo('App\User');
}
}
class Role extends Model
{
public function user()
{
return $this->belongsTo('App\User');
}
}
然后访问具有所有关系的用户:
$user = User::with(['demographic', 'role'])->find(1);
var_dump($user->demographic); // returns the related Demographic model
var_dump($user->role); // returns the related Role model