2017-05-07 1 views
0

는 그래서 우리가 우리의 테이블 (포스트 및 태그)Laravel :

이 포스트는 그래서이하는 (많은 한) 관계가에 따라 두 모델을 가정하자 많은 하나 개의 모델에 많은 관계로 많은 한 가지 하나의 태그 만 허용하는 강조 표시된 태그 필드.

게시물에는 해당 게시물에 태그가 할당되어있는 관계가 많습니다 (일반 태그와 같습니다).

내가 이해하는 한, 같은 테이블에 둘 이상의 관계를 할당 할 수 없습니다. Laravel을 사용하면 어떻게 가능합니까? 가장 좋은 방법은 무엇입니까?

답변

0
You can do following : 

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Post extends Model 
{ 

    public function tags(){ 

     return $this->hasMany('App\Tag'); 
    } 

    public function highlightedtag(){ 

     return $this->tags->where('tag_type', 'highlighted')->first(); 
    } 

} 

?> 

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Tag extends Model 
{ 

    public function posts(){ 

     return $this->hasMany('App\Post'); 
    } 

} 

?> 
+0

당신이 many to many 관계를 가질 필요가있는 태그를 가지려면, one to many는 전혀 작동하지 않습니다. 그리고 대답에서, 당신은 같은 강조 표시된 태그를 가진 다른 포스트를 고려하지 않습니다. – Mike

0

정확하게 이해하면 게시물에 주 (강조 표시된 태그) 태그와 여러 개의 일반 태그가 있어야합니다. 이것은 꽤 쉽습니다.

귀하의 게시물 모델 함수 :

public function tag() 
{ 
    //Your highlighted tag 
    return $this->belongsTo(Tag::class); 
} 

public function tags() 
{ 
    //All normal tags 
    return $this->hasMany(Tag::class); 
} 

그리고이이 테이블의 열은 다음과 같습니다

posts 테이블 :

id: int 
title: string 
content: string 
tag_id: int 

tags 테이블 :

id: int 
name: string 
post_id: int 
+0

불행하게도 이것이 작동하지 않습니다. 처음부터 태그를 사용하려면 많은 관계가 필요합니다. 일대일 방식은 작동하지 않습니다. 답변에서 우리는 짧은 1 데이터베이스 필드, 어디에 우리가 강조 표시된 태그를 넣어!? – Mike