繁体   English   中英

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM