如何使用雄辩的Laravel ORM编写连接查询

时间:2014-10-29 04:42:36

标签: laravel orm eloquent

目前我有三个表,一个是具有以下列的属性表:

  • ID
  • 名称
  • 描述

第二个是具有以下列的标签表:

  • id
  • tag_name
  • tag_status

第3个是包含以下列的数据透视表:

  • ID
  • TAG_ID
  • PROPERTY_ID

现在在属性模型中,我已经像这样定义了与数据透视表的关系:

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

并且在Tag Model中我已经像这样定义了与数据透视表的关系:

public function properties()
    {
        return $this->belongsToMany('Property');
    }

现在我需要的是如何使用雄辩的Laravel ORM在这三个表上编写以下查询:

 $propertyTags=Property::join('property_tag', 'properties.id', '=', 'property_tag.property_id')
             ->join('tags', 'tags.id', '=', 'property_tag.tag_id')
             ->where('properties.id','=',$property_id)
             ->get(['tags.tag_name','tags.id']);

1 个答案:

答案 0 :(得分:0)

你可以尝试

$property_obj = Property::find($property_id);
$property_tags = $property_obj->tags->all();

或使用预先加载

$property_with_tags = Property::with('tags')->where('id','=',$property_id)->get();