如何在多对多关系中正确检索laravel中的数据?

时间:2014-11-25 14:10:17

标签: php mysql laravel laravel-4

我与数据透视表有很多关系。

产品

id | title | ...

标签

id | title | ...

good_tag

id | good_id | tag_id | ...

如何正确检索laravel中的所有商品及其标签?

由于

2 个答案:

答案 0 :(得分:1)

  

好的,首先让我们在模型中写下关系:

好模型(代表货物表)

public function getTags()
{
    return $this->belongsToMany('Tag','good_tag','good_id','tag_id');
}

标签模型(代表标签表),这是获取特定标签商品的反向关系


public function getGoods()
{
    return $this->belongsToMany('Good','good_tag','tag_id','good_id');
}

  

现在检索所有商品及其标签的代码是:

    $goods=Good::All();  
    foreach($goods as $good)
    {
        echo $good->title;
        echo "Tags: ";
        foreach($good->getTags as $tag)
        {
            echo $tag->title." ";
        }

    }

答案 1 :(得分:0)

急切加载

$goods = Good::with('tags')->get();

foreach ($goods as $good) {
    // each goods
    echo $good->title;

    foreach ($good->tags as $tag) {
        // each tag for that goods
        echo $tag->title;
    }
}

每个返回的Good模型都会附加标签集。

Docs - Eloquent - Eager Loading