猿问

如何从 Laravel 中分配给某个属性的属性表中获取相关行

我有类别表、属性表和 attribute_value 表,


Category:

id | Catgeory Name 


Attribute:

id| cat_id | Attribute Name


Attribute values Table:

id | attr_id | attr_value

现在我想像这样显示它:


Category Name 

Attribute Name 1

Attribute Val 1

Attribute val n

Attribute Name 2

Attribute Val 1

Attribute Val n

..

..

我正在使用以下模型


属性:


 public function attr_values()

  {

  return $this->hasMany(AttributeValue::class);

  }

类别:


public function categoryAttributes()

    {

        return $this->hasMany(Attribute::class, 'category_id');

    }

在控制器中,我使用以下方式获取数据:


  Category::with(['categoryAttributes','attrValues'])->get()->find($categoryId);

但我无法获取链接到类别及其属性值的数据属性。


结果:

隔江千里
浏览 116回答 1
1回答

沧海一幻觉

您可以连接表格并选择所需的列: Category::whereIn('id', $ids)->join('attribute', 'attribute.cat_id', '=', 'category.id')            ->join('attribute_value', 'attribute_value.attr_id', '=', 'attribute.id')            ->select('category.category_name', 'attribute.attribute_name', 'attribute_value.attr_value')->get();使用关系:  Category:: with(['categoryAttributes'=>function($query){            $query->addSelect('attribute.cat_id','attribute.attribute_name')                ->with(['attr_values'=>function($query){                    $query->addSelect('attribute_value.attr_value','attribute.attr_id');            }]);        }])->whereIn('id', $ids)->get();请注意,需要将外键关系列添加到 select 语句,以便 Laravel 获得正确的对象
随时随地看视频慕课网APP
我要回答