使用关系在单个Eloquent Query laravel中获取数据?

时间:2014-02-13 13:01:36

标签: mongodb laravel-4 eloquent

我正在开发社交应用程序前端Angualar,Backend laravel和数据库Mongodb。我有这样的模型:

Hoots
-----------------
 - _id
 - content
 - publish_id

Article 
-----------------
 - _id
 - content
 - publish_id

Story
-----------------
 - _id
 - content
 - publish_id

Publish
-----------------
 - _id
 - post_id
 - type
 - user_id

发布中的帖子ID属于hids,文章和故事中的_id,其中type表示它是hoot,文章或故事。

我有这样的模型

//Article model 
class Article extends Eloquent {

  public function getpublish(){
     return $this->hasMany('Publish','post_id');
    }
  }
 //Story model 
 class Story extends Eloquent {

  public function get_publish(){
     return $this->hasMany('Publish','post_id');
    }
  }

 //Hoots model 
 class Hoots extends Eloquent {

  public function get_publ(){
     return $this->hasMany('Publish','post_id');
    }
  }

//Publish model 
 class Publish extends Eloquent {

  public function getdata(){

     return $this->BelongsTo('Hoots','Article','Story','publish_id');
    }
  }

我正在使用

  Publish::with('getdata')->where('user_id',Auth::user()->id)->get(); 

使用这个我只能在一个模型中获得发布数据以及post_id相应的数据,即仅仅是h h。我想从这三个表中得到这个。

我想用相应的post_id数据获取发布模型数据。如何使用eloquent完成此单个查询。

1 个答案:

答案 0 :(得分:1)

我想也许你没有正确设置你的关系;

//Publish model 
 class Publish extends Eloquent {

  public function hoot(){

     return $this->HasMany('Hoots','publish_id');
    }
  }

  public function article(){

     return $this->HasMany('article','publish_id');
    }
  }

  public function story(){

     return $this->HasMany('stort','publish_id');
    }
  }

Publish::with(array('hoot', 'story', 'article'))->where('user_id',Auth::user()->id)->get();