我正在用Laravel 4构建一个应用程序,并使用雄辩的ORM。
我认为描述我的问题最简单的方法是举一个例子,尽管不太可能.
我有一个Cookie模型(如OREO等)。Cookie反过来也可以属于人类或异形。所以..。
是否可以(正确)说:
琦琦属于人类
和
饼干是外星人的吗?
同样的琦琦不能同时属于人类和异族,也不能在同一物种的成员之间共享。
所以我想我真正想问的是,Cookie表能有两个外键列吗,一个是人类的,一个是外星人的?
提前谢谢你的建议。
发布于 2013-12-04 11:52:47
你可以拥有这个:
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;https://stackoverflow.com/questions/20369411
复制相似问题