具有整数列的 Laravel 关系数组

Hit*_*esh 4 orm foreign-keys laravel eloquent laravel-6

类别表

在此输入图像描述

产品表

在此输入图像描述

我想创建与类别表的关系 ->id 与产品表category_id 建议对此关系 数组与整数列关系的任何想法

控制器

Products::with('category')->get();
Run Code Online (Sandbox Code Playgroud)

产品型号

public function category() {
    return $this->hasMany(App\Models\Categories::class, 'id', 'category_id');
}
Run Code Online (Sandbox Code Playgroud)

类别型号

public function product() {
    return $this->belongsTo(Products::class,'category_id', 'id');
}
Run Code Online (Sandbox Code Playgroud)

Bar*_*oij 5

如果您希望它起作用,您应该创建多对多关系。

开始时你的数据库应该是这样的: 在此输入图像描述

这样,您的产品和类别就可以正确链接,如果您想向产品添加新类别,反之亦然,您只需将类别和产品的 ID 添加到category_product 表中即可。

然后对于您的关系方法,在您的 Product.php(模型)中您将获得以下关系方法:

/**
 * @return BelongsToMany
 */
public function categories(): BelongsToMany
{
    return $this->belongsToMany(Category::class);
}
Run Code Online (Sandbox Code Playgroud)

在您的 Category.php (模型)中:

/**
 * @return BelongsToMany
 */
public function products(): BelongsToMany
{
    return $this->belongsToMany(Product::class);
}
Run Code Online (Sandbox Code Playgroud)

您现在可以使用以下方式获取产品的所有类别:

$product = Product::first();
$product->categories;
Run Code Online (Sandbox Code Playgroud)

只是为了一些额外的信息。您可以使用模型来存储关系。

例如,您想向产品添加类别 1、2、3。

您可以简单地执行以下操作:

$product = Product::first();
$product->categories()->sync([1, 2, 3]);
Run Code Online (Sandbox Code Playgroud)