【问题标题】:two different foreign keys on one model一个模型上有两个不同的外键
【发布时间】:2017-10-13 07:51:13
【问题描述】:

我有这 3 张桌子

产品

  • 身份证
  • product_type_id
  • 姓名

产品属性

  • 身份证
  • product_type_id
  • 姓名

product_attribute_values

  • 身份证
  • attribute_id
  • product_id
  • 价值

  1. 产品有多个属性,它们由product_type相关联
  2. 属性有多个属性值,它们通过attribute_id关联
  3. 属性值与一个属性和一个产品相关,它们通过product_id与产品相关

我创建了 3 个模型,Product、ProductAttribute 和 ProductAttributeValue

产品型号

public function attributes(){  
    return $this->hasMany('App\ProductAttribute', 'product_type_id',   'product_type_id');
}

产品属性模型

public function attributeValues(){
    return $this->hasMany('App\ProductAttributeValue', 'attribute_id', 'id');
}

然后当我试图获得具有所有相关属性和属性值的产品时

$product = Product::find(1)->with('attributes.attributeValues')->get()->toArray();

正在拉入该属性的所有属性值。

问题是我不确定如何为两个不同的模型设置 2 个外键...

我希望我解释得足够好。

【问题讨论】:

    标签: php laravel model eloquent


    【解决方案1】:
    $product = Product::where([
                ['id', '=', $category['id']],
                ['slug', '=', $productSlug]
               ])
               ->with(['attributes.values' => function ($query) {
               $query->where('product_id', '=', 1);
            }])->get()->first();
    

    【讨论】:

    • 这是我的解决方案。希望对某人有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2012-02-28
    • 2018-11-11
    • 2016-12-07
    • 2010-10-07
    • 2020-03-06
    • 2015-12-04
    • 1970-01-01
    相关资源
    最近更新 更多