【发布时间】:2017-05-07 16:05:56
【问题描述】:
假设我们有两个基于我们的表的模型(Post 和 Tag)
帖子有一个(一对多)关系,有一个所谓的突出显示标签字段,它只接受一个标签。
帖子还具有(多对多)关系,可以为该帖子分配标签,所以它就像普通标签一样。
据我了解,您不能将多个关系分配给同一个表,使用 Laravel 怎么可能?最佳做法是什么?
【问题讨论】:
标签: laravel
假设我们有两个基于我们的表的模型(Post 和 Tag)
帖子有一个(一对多)关系,有一个所谓的突出显示标签字段,它只接受一个标签。
帖子还具有(多对多)关系,可以为该帖子分配标签,所以它就像普通标签一样。
据我了解,您不能将多个关系分配给同一个表,使用 Laravel 怎么可能?最佳做法是什么?
【问题讨论】:
标签: laravel
如果我理解正确,您希望帖子有一个主要(突出显示的标签)标签和多个普通标签。这很容易。
您的帖子模型功能:
public function tag()
{
//Your highlighted tag
return $this->belongsTo(Tag::class);
}
public function tags()
{
//All normal tags
return $this->hasMany(Tag::class);
}
这些是您的表格的列:
posts表:
id: int
title: string
content: string
tag_id: int
tags表:
id: int
name: string
post_id: int
【讨论】:
You can do following :
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
public function tags(){
return $this->hasMany('App\Tag');
}
public function highlightedtag(){
return $this->tags->where('tag_type', 'highlighted')->first();
}
}
?>
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Tag extends Model
{
public function posts(){
return $this->hasMany('App\Post');
}
}
?>
【讨论】: