为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
隔江千里 2023-06-30 16:25:18
我有类别表、属性表和 attribute_value 表,Category:id | Catgeory Name Attribute:id| cat_id | Attribute NameAttribute values Table:id | attr_id | attr_value现在我想像这样显示它:Category Name Attribute Name 1Attribute Val 1Attribute val nAttribute Name 2Attribute Val 1Attribute 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);但我无法获取链接到类别及其属性值的数据属性。结果:
查看完整描述

1 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

您可以连接表格并选择所需的列:


 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 获得正确的对象


查看完整回答
反对 回复 2023-06-30
  • 1 回答
  • 0 关注
  • 115 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信