2016-05-28 4 views
0

У меня есть три таблицы:Laravel Eloquent hasManyThrough отношение + пагинация

Videos: 
-id 
-name 
-another fields 

Cats: 
-id 
-name 
-another fields 

Cats_videos: 
-id 
-cat_id 
-video_id 

И три красноречивых модели:

class cat extends Model 
{ 
    protected $table = 'cat'; 

    public function AllCatVideos() 
    { 
     return $this->hasManyThrough('App\videos', 'App\cats_videos','cat_id','id'); 
    } 
} 

class videos extends Model 
{ 
    public $timestamps = false; 
    protected $table ='videos'; 
} 

class cats_videos extends Model 
{ 
    protected $table = 'cats_videos'; 
} 

Итак, я хочу, чтобы получить все видео в одной кошки, а затем разбиваться результаты. Я пытаюсь сделать так:

$cat = new Cats(); 
    $videos = $cat->find(58)->AllCatVideos()->toSql(); 

И я получать SQL, как это:

select * from `videos` inner join `cats_videos` on `cats_videos`.`id` = `videos`.`id` where `cats_videos`.`cat_id` = 58 

Но мне нужно вместо "cats_videosid = videos "cats_videosvideo_id = videosid..".. id ". Как я могу это сделать, используя «hasManyThrough»? Или я должен посмотреть что-то еще?

ответ

1

Проблема решена. Мне просто нужно использовать ownToMany.

class cat extends Model{ 
public function Videos() 
{ 
    return $this->belongsToMany('App\videos','cats_videos','cat_id','video_id'); 
}} 
Смежные вопросы