![](/img/trans.png)
[英]How to write query to get specific data from pivot table in laravel?
[英]Laravel: How to query data from multiple table?
该数据库具有3个表chars,tags和chars_tags
字符有以下几列:
id | char_name
标签包含以下列:
id | tag_name
chars_tags具有以下列:
id | char_id | tag_id
我总是使用下面的代码来获取数据,因为上次char表具有另一列称为“ tag_id”的列,现在他们删除了“ tag_id”列并将其更改为数据透视表,即“ chars_tags”
$char = chars::where('id', '=', 1)
->with('tags:id,tag_name')
->get();
那么,现在如何获取带有标签的char?
首先使用字符和标签之间的多对多关系建立模型
class Char extends Model
{
public function tags()
{
return $this->belongsToMany(Tag::class, 'chars_tags', 'char_id');
}
}
class Tag extends Model
{
public function chars()
{
return $this->belongsToMany(Char::class, 'chars_tags', 'tag_id');
}
}
现在,您可以渴望用char加载相关标签
$char = Char::with('tags')
->where('id', '=', 1)
->get();
或者如果您需要单个对象,则可以使用find()
$char = Char::with('tags')->find(1);
您还可以使用sql连接: https : //laravel.com/docs/5.6/queries#joins 1
DB::table('chars')
->where('chars.id', 1)
->leftJoin('chars_tags', 'chars_tags.char_id', '=', 'chars.id')
->leftJoin('tags', 'tags.id', '=', 'chars_tags.tag_id')
->get();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.