我有一个用户模型,每个用户都有一个内部或外部类型.存储在内部和外部用户上的数据非常不同,因此存在单独的UserInternal和UserExternal模型.
我该如何定义这种关系? UserInternal和UserExternal表中有一个键’user_id’,每个用户在其中一个表中都有一个匹配的行.
我该怎么做呢?我试过这个,但它并不总是有效(例如,如果我尝试User :: with(‘data’) – > find(1)它将无法工作,因为$this尚未设置.
在用户模型中:
public function data() { if( $this -> type === 'internal' ) { return $this -> hasOne('UserInternal'); } else { return $this -> hasOne('UserExternal'); } }