Получить данные в одном Laravel Eloquent Query с использованием отношений?

Я работаю над интерфейсом социальных приложений 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 в сообщениях, статьях и рассказах, где тип означает, что это сообщение, статья или рассказ.

У меня есть такая модель

//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 в одной модели, то есть только улюлюкает. Я хочу это из всех трех таблиц.

Я хочу получить данные модели публикации с соответствующими данными post_id. Как я могу выполнить этот единственный запрос, используя красноречие.


person Anil Sharma    schedule 13.02.2014    source источник
comment
очень сложно понять, о чем вы просите. Можете ли вы предоставить таблицу ожидаемых результатов? \   -  person Gaz_Edge    schedule 13.02.2014
comment
@Gaz_Edge Я обновил код. Kindly Review. Как я могу получить данные модели публикации вместе с соответствующими данными post_id из трех разных моделей, имеющих внешний ключ publish_id?   -  person Anil Sharma    schedule 14.02.2014


Ответы (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(); 
person Gaz_Edge    schedule 14.02.2014
comment
Я не знаю, почему, но эта штука не работает, я получаю только идентификатор, а не контент? Я указываю имя таблицы внутри объединений, как вы проиллюстрировали выше. База данных, которую я использую, - это mongodb - person Anil Sharma; 14.02.2014
comment
Потрясаящий человек. Я пробовал то же самое, но с принадлежностями. hasmany делает очарование. Спасибо - person Anil Sharma; 14.02.2014