我有模型实体和相关模型标签。后者用作标记,因此关系由数据透视表
提供服务我想这很容易,但我迷路了。
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())
) !!}
我的问题:
如何在BLADE中检查Entity对象是否具有特定容量?
在我的控制器SHOW方法中我得到一个单独的实体:
$object = Entity::find(34);
然后我希望如果实体被某个标签标记
@if($object->capacities .... has tag= 3
// do things here
@endif
THX
答案 0 :(得分:2)
您可以向Entity类添加一个公共方法,以便检查此实体上的现有标记:
<?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
答案 1 :(得分:2)
您可以检查实体是否有这样的特定标记:
@if($entity->tags()->where('id', 3)->exists()) //.... has tag= 3
// do things here
@endif