首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >公共模型的多个1到1关系

公共模型的多个1到1关系
EN

Stack Overflow用户
提问于 2013-12-04 07:21:50
回答 1查看 52关注 0票数 0

我正在用Laravel 4构建一个应用程序,并使用雄辩的ORM。

我认为描述我的问题最简单的方法是举一个例子,尽管不太可能.

我有一个Cookie模型(如OREO等)。Cookie反过来也可以属于人类或异形。所以..。

是否可以(正确)说:

琦琦属于人类

饼干是外星人的吗?

同样的琦琦不能同时属于人类和异族,也不能在同一物种的成员之间共享。

所以我想我真正想问的是,Cookie表能有两个外键列吗,一个是人类的,一个是外星人的?

提前谢谢你的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-04 11:52:47

你可以拥有这个:

代码语言:javascript
复制
name       type   nullable
------------------------------
id         int    no
name       text   no
human_id   int    yes 
alien_id   int    yes

这些可能是你的课程:

代码语言:javascript
复制
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');
    }

}

然后你可以用这样的方法:

代码语言:javascript
复制
$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;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20369411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档