没有实际外键的一对多关系

时间:2014-03-04 12:45:16

标签: mysql laravel foreign-key-relationship

我想在教程中建立一对多的关系。

~~~ 一对多

一对多关系的一个例子是“有很多”评论的博客文章。我们可以这样建模这种关系:

class Post extends Eloquent {

    public function comments()
    {
        return $this->hasMany('Comment');
    }

}

~~~

所以我想制作一个模型帖子(连接到表格“帖子”)和一个模型评论(连接到表'评论')。我在phpMyAdmin中创建表而不是迁移(因为我在在线服务器上没有SSH支持)。评论表有一列'posts_id'。

我可以使用......

$comments = Post::find(1)->comments;

..没有在phpmyadmin中定义两个表之间的外键关系?

如果答案是肯定的。

我应该在我的“评论”表格中创建一个列名“post_id”或类似的东西,或者其他东西可以使用吗?就像你使用普通外键一样?

1 个答案:

答案 0 :(得分:1)

您不必在MySQL端显式声明外键,但至少要创建一个post_id列,Laravel将将其用作外键。

当然,您可以根据需要命名此列,并在关系声明中指定它:

class Post extends Eloquent {

    public function comments()
    {
        return $this->hasMany('Comment', 'post_primary_key');
    }

}

您还可以在PHPMyAdmin中将此列声明为外键,以提高数据库的健壮性,但这不是Laravel业务。