【发布时间】:2014-05-24 06:01:31
【问题描述】:
我正在尝试根据标签获取帖子的相关帖子。
我的帖子 (id 1) 附加了几个标签,即标签 (id 1-3) 这意味着我的帖子有 3 个标签。根据这些标签,我想显示其他具有此标签的帖子。
我的标签模型:
<?php namespace Digitus\Base\Model;
class Tag extends \Eloquent{
protected $table = 'tags';
protected $guarded = ['id'];
protected $fillable = ['name'];
public function posts()
{
$this->belongsToMany('Digitus\Base\Model\Post');
}
}
我的帖子模型:
<?php namespace Digitus\Base\Model;
class Post extends \Eloquent {
protected $fillable = array('title','body', 'author','slug');
public function user()
{
return $this->belongsTo('Digitus\Base\Model\User', 'author');
}
public function tags()
{
return $this->belongsToMany('Digitus\Base\Model\Tag');
}
public function comments()
{
return $this->belongsToMany('Digitus\Base\Model\Comment');
}
public function categories()
{
return $this->belongsToMany('Digitus\Base\Model\Categorie');
}
}
在我看来,我目前有:
<div class="col-xs-8 col-sm-8 col-md-8 col-lg-8 panel panel-info">
<p>Gerelateerde berichten:</p>
<?php
$posts = Digitus\Base\Model\Post::all();
$tags = Digitus\Base\Model\Tag::all(); ?>
@foreach($posts as $post)
@foreach($post->tags as $tag)
<div class="col-xs-6 col-sm-6 col-md-6 col-lg-6">{{ $post->title }}</div>
@endforeach
@endforeach
</div>
但它并没有真正显示具有相同标签的帖子,它只是将我所有的帖子都扔掉了。另外,我尝试向它添加某种过滤器,因此不会有任何重复的帖子(相同的帖子出现 2 次以上),但这也失败了。
我不是在寻找直接的答案,而是在寻找方向和建议等。
【问题讨论】:
-
你能不能比“doesn'þ doesn'þ doesn'þdoesn'þdoesn'þdoesn'þdoesn'þdoesn'þdoesn'þdoesn'þdoesn'þdoesn'þdoesn'þdoesn'þdoesn'þdoesn'þdoesn'þdoesn'þdoesn'þdoesn'þdoesn'þ更明确?
-
对不起@TomMacdonald,我编辑了
-
要做你想做的事,你需要一个嵌套的 foreach,虽然这不是解决方案,因为它会导致 n+1 问题(许多数据库查询)。您必须阅读有关预加载的内容laravel.com/docs/eloquent#eager-loading
标签: php model laravel relationship