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可以很好地上传图像,但是当我检查数据库时,没有外键链接到上传这些图像时捕获的产品
答案 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。使用一对多关系。一对多关系定义为一个模型拥有多个模型
否则,您可以使用laravel查询构建器将这两个表连接起来
答案 2 :(得分:0)
我建议您使用laravel经常使用一对多(多态) 您可以看到文档here