在Eloquent中从一个表到另一个表加入

时间:2016-03-20 11:28:01

标签: php laravel orm eloquent

我应该从Property模型获得什么样的关系:

  • name
  • 中的default_characteristics字段
  • value
  • 中的characteristic_value字段

我该怎么做?我可以用一种关系来做吗?

在添加characteristic_value表格之前,在value_id来自property_characteristics,我只有字符串value字段,并且所有人都在使用。

  public function characteristics() {
     return $this->belongsToMany(
        'Proactiv\DefaultCharacteristic',
        'property_characteristics',
        'property_id',
        'characteristic_id')
        ->withPivot('value');
 } // In Property model.

这是返回正确数据的RAW SQL:

SELECT a.name, c.name, d.value FROM properties a

INNER JOIN property_characteristics b

on a.id = b.property_id

INNER JOIN default_characteristics C

on b.characteristic_id = c.id

INNER JOIN characteristic_values d

on b.value_id = d.id

WHERE a.id = 1

AND c.name = 'rooms'

返回:属性名称,房间,3

enter image description here

1 个答案:

答案 0 :(得分:0)

我认为使用Query Builder的最佳选择 或者你可以试试这个:

$property = new Property();
$property->with("DefaultCharacteristic.PropertyCharacteristic.CharacteristicValue")->where(...)->first();