1

我正在做一个项目,我们有以下模型:

  • 物品种类
  • 项目子类型
  • 物品

作为一个例子,我会说:

ItemType : 硬件或软件

ItemSubtype:RAM、电源(如果是硬件)或应用程序、操作系统(如果是软件)

项目:4GB DDR4(如果是 RAM)或 MS Office 2019(如果应用程序)

这些是我看到的关系:

  1. 一个ItemType可以有多个ItemSubtype并且ItemSubtype只能属于一个ItemType
  2. 一个ItemSubtype可以有多个Item,一个Item只能属于一个ItemSubtype

在此处输入图像描述

这些是我的问题:

  1. 显然,一个Item只能属于一个ItemType。我是否需要在ItemItemType模型之间建立关系?
  2. 如果问题1返回true(这是整天编码的结果!)我应该使用什么样的关系?ItemType通过ItemSubtype (hasManyThrough)有很多Item?还是ItemType hasMany ItemItem belongsTo one ItemType?或者只是使用ItemSubtype作为中间模型,并通过ItemSubtype从Item转到ItemType ,反之亦然,而ItemTypeItem之间没有任何直接关系?
  3. 如果我不在ItemTypeItem模型之间创建关系,我是否需要在项目迁移中使用item_type_id ?

  4. 对此有不同的方法吗?

先感谢您!

4

1 回答 1

0

你可以很容易地做到这一点:

dd($rental_obj->car->maker->make_name); // output : VolksWagen

如果您的模型写得很好,例如:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

/**
 * @property integer $id
 * @property integer $id_renter
 * @property integer $id_car
 * @property float $price
 * @property Date $date_beg
 * @property Date $date_end
 * @property Car $car
 * @property Renter $renter
 * @property string $created_at
 * @property string $updated_at
 */
class Rental extends Model
{
    /**
     * The "type" of the auto-incrementing ID.
     *
     * @var string
     */
    protected $keyType = 'integer';

    /**
     * @var array
     */
    protected $fillable = ['id_renter','id_car','price','date_beg','date_end'];

    /**
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    public function car()
    {
        return $this->belongsTo('App\Models\Cars', 'id_car');
    }

    /**
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    public function renter()
    {
        return $this->belongsTo('App\Models\Renters', 'id_renter');
    }
}
于 2020-10-21T02:37:46.157 回答