2015-05-20 57 views
1

我有模型实体和相关模型标记。后来作为标签,所以关系是由数据透视表服务如何检查模型是否由特定标记标记

我想这很容易,但我迷路了。现在

public function tags() 
{ 
    return $this->belongsToMany('App\Models\Tag', 'entity_tags', 'entity_id', 'tag_id'); 
} 

,在我看来,我可以列出所有标签: 它们被定义

{!! 
       join(', ', 
        array_map(function($o) { 
         return link_to_route('entities.profile', 
         $o->name, 
         [$o->id], 
         ['class' => 'ui blue tag button'] 
         );}, 
         $object->tags->all()) 
      ) !!} 

我的问题:

我如何在刀片可检查实体对象是否具有特定能力?

在我的控制器SHOW方法

我得到一个单一的实体:

$object = Entity::find(34); 

,然后我想做某事,如果实体是由某种标签

@if($object->capacities .... has tag= 3 
// do things here 
@endif 

THX

+0

$对象 - > tags- > all()什么是$对象这里是$ o? –

+0

编辑 - 谢谢。 – Peter

+0

什么是容量? –

回答

2

您可以检查如果实体具有一定的标签是这样的:

@if($entity->tags()->where('id', 3)->exists()) //.... has tag= 3 
    // do things here 
@endif 
2

标签你可以添加一个公共方法到你的实体类,这将让你检查这个实体上的现有标签:

<?php 
public function hasTag($tagToMatch) 
{ 
    foreach ($this->tags as $tag) 
    { 
     if ($tag->id == $tagToMatch) 
     return (true); 
    } 
    return (false); 
} 

这将允许您使用下面的代码在你的观点:

@if ($entity->hasTag(3)) 
    Do something 
@endif 
相关问题