我怎样才能最好地将product_id链接到图像,以便一个产品可以链接多个图像

时间:2018-12-29 15:37:46

标签: laravel

Iam在电子商务网站上工作。我有IAM上传带有1个显示图像的产品。我想将多个图像分别上传到另一个表中,但通过product_id链接以标识属于该产品的图像

这是我的数据库架构

    Schema::create('product_images', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('product_id');
        $table->string('name');
        $table->string('size');
        $table->timestamps();

        $table->foreign('product_id')
              ->references('id')->on('products')
              ->onDelete('cascade');
    });

使用此iam可以很好地上传图像,但是当我检查数据库时,没有外键链接到上传这些图像时捕获的产品

3 个答案:

答案 0 :(得分:1)

您需要在产品上定义一对多关系。

这是一个例子。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    /**
     * Get the comments for the blog post.
     */
    public function images()
    {
        return $this->hasMany('App\ProductImage');
    }
}

接下来,您需要在App\ProductImage

中定义关系的逆函数
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class ProductImage extends Model
{
    /**
     * Get the comments for the blog post.
     */
    public function product()
    {
        return $this->belongsTo('App\Product');
    }
}

然后您可以通过执行以下操作来检索与产品关联的所有图像:

$images = App\Product::find(1)->images;

在创建新的Product时,您还可以通过执行以下操作直接将ProductImage与之关联:

$product->images()->createMany([
    ['path' => 'path-to-file.jpg',],
    ['path' => 'path-to-file.jpg',],
]);

答案 1 :(得分:0)

如果您正在使用laravel Elequent。使用一对多关系。一对多关系定义为一个模型拥有多个模型

One To Many

否则,您可以使用laravel查询构建器将这两个表连接起来

Query Builder

答案 2 :(得分:0)

我建议您使用laravel经常使用一对多(多态) 您可以看到文档here