我的数据库中有以下表格结构。
表名称:磁贴
列:id,tile_name,tile_thumb,tile_snippet
表名:标签
列:id,tag_title
表名:tile_tags
列:id,tile_id,tag_id
模型: Tile,Tag,TileTag
在我的主要模型类中,我为一个名为TileTag的模型指定了以下关系,这是一个数据透视表。
<?php namespace Tiles;
use Illuminate\Database\Eloquent\Model;
class Tile extends Model {
protected $table = 'tiles';
public function tags() {
return $this->belongsTo('Tiles\TileTag');
}
}
在我的foreach循环中,它返回tile_name和我表中的任何其他列,除了由relatipnship加入的列。
@foreach($tiles as $tile)
<a href="tile/{{$tile->tile_name}}">
<li class="col-md-4 mix" data-category="{{ $tile->tags->tag_title }}">
{!! HTML::image($tile->tile_thumb, null, array('class' => 'img-responsive')) !!}
</li>
</a>
@endforeach
如何在每个循环中对我的主条目进行排序时,将我的类别/标记链接到我的主条目?
我尝试在循环期间通过{{$ tile-&gt; tags-&gt; tag_title}}返回数据,但它返回一个空字符串。
控制器方法:
class TileController扩展Controller {
/**
* Display a listing of tiles from the database.
*
* @return Response
*/
public function index() {
// Get tile data from the model
$tiles = \Tiles\Tile::all();
return view('pages.index', compact('tiles'));
}
返回数组
答案 0 :(得分:2)
我认为您不必为Tile_Tag创建模型。 Laravel可以开箱即用地处理ManyToMany关系(我想这是关系的类型,因为你使用数据透视表)。你的模型应该是
class Tile extends Model {
protected $table = 'tiles';
public function tags() {
return $this->belongsToMany('Tiles\Tag');
}
}
和
class Tag extends Model {
protected $table = 'tags';
public function tiles() {
return $this->belongsToMany('Tiles\Tile');
}
}
Laravel将知道您有一个名为“tag_tile”的数据透视表,其中包含“tag_id”和“tile_id”列。查看相关文档here
然后,您可以像这样
遍历每个图块的标签集合@foreach ($tiles as $tile)
{!!$tile->tile_name!!}
@foreach ($tile->tag as $tag)
{!!$tag->tag_title!!}
@endforeach
@endforeach
希望它有所帮助。