Laravel 类别模型关系

Laravel Category Model Relationships

我的数据库中有以下 table 结构。

Table 名称:瓷砖

列:id,tile_name,tile_thumb,tile_snippet

Table 名称:标签

列:id,tag_title

Table 姓名:tile_tags

列:id,tile_id,tag_id

型号: 瓷砖、标签、瓷砖标签

在我的条目的主模型 class 中,我指定了与称为 TileTag 的模型的以下关系,它是一个枢轴 table。

<?php namespace Tiles;

use Illuminate\Database\Eloquent\Model;

class Tile extends Model {

    protected $table = 'tiles';


   public function tags() {

        return $this->belongsTo('Tiles\TileTag');

    }
}

在我的 foreach 循环中,它 returns tile_name 和我的 table 中的任何其他列,除了由 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 

如何让我的 categories/tags 在每个循环中排序时链接到我的主要条目?

我尝试在循环期间通过 {{ $tile->tags->tag_title }} 返回数据,但它 returns 是一个空字符串。

控制器方法:

class TileController 扩展控制器 {

/**
 * 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'));

}

返回数组:

我认为您不必为 Tile_Tag 创建模型。 Laravel 可以开箱即用地处理 ManyToMany 关系(我想这是关系的类型,因为你使用了 pivot table)。您的模型应该是

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" 的数据透视表 table,其中包含列 "tag_id" 和 "tile_id"。查看相关文档here

然后您可以像这样遍历每个图块的标签集合

@foreach ($tiles as $tile)
         {!!$tile->tile_name!!} 
         @foreach ($tile->tag as $tag)
           {!!$tag->tag_title!!} 
         @endforeach
@endforeach

希望对您有所帮助。