Laravel 4 Relations属于多个表格

时间:2013-12-20 00:35:56

标签: php orm laravel-4 database-relations

我正在尝试使用laravel 4进行评论和帖子系统,其中2种类型的“用户”可以发表评论。对于2类型的“用户”意味着我有一个表用户和一个表团队,我的期望是两者都可以对相反的帖子发表评论。让我们用我现在使用的逻辑:

架构表:

用户表

Table | Users

id       - integer autoincrement
fullname - string 20

团队表

Table | Teams

id        - integer autoincrement 
fullname  - string 50

帖子表

Table | Posts

id         - integer autoincrement
text       - text
id_poster  - integer
type_id    - integer // if is 1 the id_poster filed belongs to user else if 2 belongs to team

评论表

Table | Comments

id          - integer autoincrement
id_post     - integer
id_poster   - integer
id_type     - integer
text        - text

现在让我们谈谈这些关系:

用户关系

   Class User extends Eloquent {

     protected $table = "users";

     function posts() {
       return $this->hasMany('Post','id_poster');
     }

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

团队关系

Class Team extends Eloquent {
  protected = $table = "teams";

  function posts() {
    return $this->hasMany('Post','id_poster');
  }

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

}

帖子关系

Class Post extends Eloquent {

 protected $table = "posts";

 function users() {
   $this->belongsTo('User','id_poster');
 }

 function teams() {
   return $this->belongsTo('Team','id_poster');
 }

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

}

评论关系

Class Comment extends Eloquent {

 protected $table = "comments";

 function posts() {
   return $this->belongsTo('Post','id_post');
 }

 function teams() {
   return $this->belongsTo('Team','id_poster');
 }

}

通过这种关系,我可以获得关于单个类别的帖子和评论:

示例我为用户发帖和评论做结果

$posts = new Post;
$get_post = $posts->with('users','comments.users')->where('type_id','=',1)->get();

我可以显示

  • 用户帖子和用户评论或
  • 团队帖子和团队评论

但不是

  • 用户帖子和团队/用户评论
  • 团队帖子和用户/团队评论

数据需要我的输出关于评论是:    - id_poster   - 全名    - id_type    - 文字

简言之,我的问题是:

我必须改变什么以及为什么会出现“用户”的评论?

0 个答案:

没有答案