2017-11-12 3 views
0

그래서 두 테이블이 있습니다 : postscategories입니다. 다 - 대 - 다 관계입니다 : 게시물에는 많은 카테고리가 있고 카테고리는 많은 게시물에 속합니다.간략한 쿼리 : 다른 모델과의 관계를 기반으로 결과 필터링

내가 특정 category있는 모든 posts을 얻으려면 Category.php

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Category extends Model 
{ 
    protected $fillable = ['name', 'slug']; 

    public function posts() 
    { 
     return $this->belongsToMany('App\Post'); 
    } 
} 

Post.php

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Post extends Model 
{ 
    public function categories() 
    { 
     return $this->belongsToMany('App\Category'); 
    } 
} 

: 다음의 관계를 설명하는 모델은 다음과 같습니다 : tips

여기

내가 뭘하려 :

$tips = Category::where('name', 'Tips')->posts()->with('categories')->take(4)->get(); 

나는이 쿼리에서 무지의 수준을 잘 모르겠지만, 솔직히 그것이 작동 할 것으로 예상. 그렇지 않았습니다.

도움을 주시면 감사하겠습니다.

답변

0

정말 간단합니다 같은 :

$tipsCategory = Category::where('name', 'tips') 
    ->get(); 

$posts = $tipsCategory->posts;