我正在使用Laravel 4构建应用程序并使用Eloquent作为ORM。
我认为描述我的问题最简单的方法是举个例子,虽然不太可能......
我有一个Cookie模型(如OREO等)。 Cookie可以反过来属于人类或外星人。所以......
是否可以(正确)说:
Cookie属于Human
AND
Cookie属于Alien?
同一个Cookie不能属于人类和外星人,也不属于同一物种的成员。
所以我想我真正要问的是,Cookie表有两个外键列,一个用于人类,一个用于外星人吗?
提前感谢您的建议。
答案 0 :(得分:1)
你可以拥有:
name type nullable
------------------------------
id int no
name text no
human_id int yes
alien_id int yes
那些可能是你的课程:
class Cookie extends Eloquent {
public function human()
{
return $this->belongsTo('Human', 'human_id');
}
public function alien()
{
return $this->belongsTo('Alien', 'alien_id');
}
}
class Alien extends Eloquent {
public function cookie()
{
return $this->hasOne('Cookie', 'alien_id');
}
}
class Human extends Eloquent {
public function cookie()
{
return $this->hasOne('Cookie', 'human_id');
}
}
然后你可以这样使用它们:
$human = Human::find(1);
echo $human->cookie->name;
$cookie = Cookie::find(1);
if ($cookie->human) echo $cookie->human->name;
if ($cookie->alien) echo $cookie->alien->name;