Laravel多对多的关系

时间:2013-12-12 13:56:33

标签: php html laravel laravel-4

我有3张桌子

  • 项目(属于许多标签)
  • 标签(属于多项)
  • Item_Tag(包含item_id& tag_id)

我正在尝试使用ORM从项目中检索标签

$itemTags = Item::find($itemID)->tags;

返回object(Illuminate\Database\Eloquent\Collection)#203 (1) { ["items":protected]=> array(0) { } }

如果我添加()

$itemTags = Item::find($itemID)->tags();

我得到一长串的东西。

如何获取与此项目相关的标记?

模型标签

<?php

class Tag extends Eloquent {

    protected $fillable = array('tag');
    public function item()
    {
        return $this->belongsToMany('Item');
    }


}

模型项

<?php

class Item extends Eloquent {

    protected $fillable = array('title', 'price','user_id');


    public function tags()
    {
        return $this->belongsToMany('Tag');
    }
}

2 个答案:

答案 0 :(得分:0)

“长篇大论”只是关系对象。你不需要那个。

$itemTags = Item::find($itemID)->tags;就足够了

如果返回object(Illuminate\Database\Eloquent\Collection)#203 (1) { ["items":protected]=> array(0) { } },则表示您拥有0个对象的Eloquent Collection。换句话说,这种关系很好,只有没有标签(还)。

答案 1 :(得分:0)

我认为你需要首先加急关系数据。

$item = Item::with('tags')->find($itemID);
$tags = $item->tags;