我有一个用户模型,每个用户都有一个内部或外部类型.存储在内部和外部用户上的数据非常不同,因此存在单独的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');
}
}
解决方法:
尝试在获取用户后加载关系:
$user = User::find(1);
if( ! is_null($user))
{
$user->load('data');
}
标签:php,orm,laravel,laravel-4
来源: https://codeday.me/bug/20190708/1403321.html