Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel:如何创建产品变体组合并存储在数据库中_Php_Laravel_Eloquent_Relationship - Fatal编程技术网

Php Laravel:如何创建产品变体组合并存储在数据库中

Php Laravel:如何创建产品变体组合并存储在数据库中,php,laravel,eloquent,relationship,Php,Laravel,Eloquent,Relationship,我有以下数据库结构,但我很难理解使用Laravel时每个表之间的关系是如何工作的 另外,在更新产品时,如何生成所有产品变量值和产品变量?我不想做多个单一的查询。这在拉维尔可能吗 PRODUCTS - hasMany Options ======== product_id product_name ---------- ------------ 1 Widget 1 2 Widget 2 3 Widget 3 OPTIONS - hasMan

我有以下数据库结构,但我很难理解使用Laravel时每个表之间的关系是如何工作的

另外,在更新产品时,如何生成所有产品变量值和产品变量?我不想做多个单一的查询。这在拉维尔可能吗

PRODUCTS - hasMany Options
========
product_id product_name
---------- ------------
1          Widget 1
2          Widget 2
3          Widget 3

OPTIONS - hasMany Option Values
=======
option_id option_name
--------- -----------
1         Size SL
2         Color
3         Size SM
4         Class
5         Size ML

OPTION_VALUES - belongsTo Options
=============
option_id value_id value_name
--------- -------- ------------
1         1        Small        (Size SL)
1         2        Large        (Size SL)
2         1        White        (Color)
2         2        Black        (Color)
3         1        Small        (Size SM)
3         2        Medium       (Size SM)
4         1        Amateur      (Class)
4         2        Professional (Class)
5         1        Medium       (Size ML)
5         2        Large        (Size ML)

PRODUCT_OPTIONS - belongsToMany Products and Product Options
===============
product_id option_id
---------- ---------
1          1         (Widget 1; Size SL)
1          2         (Widget 1; Color)
2          3         (Widget 2; Size SM)
3          4         (Widget 3; Class)
3          5         (Widget 4; Size ML)

PRODUCT_VARIANTS - ???
================
product_id variant_id sku_id
---------- ---------- ------
1          1          W1SSCW (Widget 1)
1          2          W1SSCB (Widget 1)
1          3          W1SLCW (Widget 1)
1          4          W1SLCB (Widget 1)
2          1          W2SS   (Widget 2)
2          2          W2SM   (Widget 2)
3          1          W3CASM (Widget 3)
3          2          W3CASL (Widget 3)
3          3          W3CPSM (Widget 3)
3          4          W3CPSL (Widget 3)

VARIANT_VALUES - ???
==============
product_id variant_id option_id value_id
---------- ---------- --------- --------
1          1          1         1        (W1SSCW; Size SL; Small)
1          1          2         1        (W1SSCW; Color; White)
1          2          1         1        (W1SSCB; Size SL; Small)
1          2          2         2        (W1SSCB; Color; Black)
1          3          1         2        (W1SLCW; Size SL; Large)
1          3          2         1        (W1SLCW; Color; White)
1          4          1         2        (W1SLCB; Size SL; Large)
1          4          2         2        (W1SLCB; Color; Black)
2          1          3         1        (W2SS; Size SM; Small)
2          2          3         2        (W2SM; Size SM; Medium)
3          1          4         1        (W3CASM; Class; Amateur)
3          1          5         1        (W3CASM; Size ML; Medium)
3          2          4         1        (W3CASL; Class; Amateur)
3          2          5         2        (W3CASL; Size ML; Large)
3          3          4         2        (W3CPSM; Class; Professional)
3          3          5         1        (W3CPSM; Size ML; Medium)
3          4          4         2        (W3CPSL; Class; Professional)
3          4          5         2        (W3CPSL; Size ML; Large)

我已经在每个表名旁边写下了我认为它具有的关系,那些我不完全理解的表具有

好的,我将用两个表来做一个示例来显示laravel关系

你的模型应该看起来像

    use Illuminate\Database\Eloquent\Model;

class products extends Model
{
    protected $fillable=['product_id','product_name'];

    public function options(){
        return $this->hasMany('App\options');
    }
}
    use Illuminate\Database\Eloquent\Model;

class options extends Model
{
    protected $fillable=['option_id','option_detail'];

    public function product(){
        return $this->belongsTo('App\product');
    }
}
下一个选项模型应该是这样的

    use Illuminate\Database\Eloquent\Model;

class products extends Model
{
    protected $fillable=['product_id','product_name'];

    public function options(){
        return $this->hasMany('App\options');
    }
}
    use Illuminate\Database\Eloquent\Model;

class options extends Model
{
    protected $fillable=['option_id','option_detail'];

    public function product(){
        return $this->belongsTo('App\product');
    }
}
记住在选项模型上设置外键约束,如下所示

$table->foreign('option_id')->references('id')->on('product');
然后您可以通过product表访问options表,如下所示

$product->options->option_name;

从桌子上看不清楚。我能理解的是:

产品
像[Widget 1、Widget2等]

每个产品都可以有
变体
,如[sku1、sku2等]

此外,每个变体都可以有
选项/规格
如[尺寸、颜色、等级等]

最后,每个
Options\Specification
都可以有[Size:small、Class:professional等]值

对吗


只有在理解了数据之后,才能向您推荐表结构和关系。

Laravel与表之间的关系无关。我知道这一点,但我专门使用Laravel,因此我需要知道如何使用Eloquent做到这一点。正如最初的帖子所说。我理解这种简单的关系,但是,我正在努力理解如何处理
product\u variants
product\u variants\u value
关系Sam试图理解您的表,但遇到了困难