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
希望对您有所帮助。
我的数据库中有以下 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
希望对您有所帮助。