我需要有关以下主题的一些建议和帮助。

我有这样的迁移设置。

+--------------------+----------------------+--------------------+
|       plates       |   plates_container   |  container_slots   |
+--------------------+----------------------+--------------------+
| id                 | id                   | id                 |
| plate_container_id | number_of_slots(int) | slot               |
| container_slot_id  |                      | occupied (boolean) |
|                    |                      | plate_container_id |
+--------------------+----------------------+--------------------+


表之间的关系是这样的。

盘子


belongsTo a platecontainer
belongsTo containerslot


板式容器


platecontainer hasMany containerSlots
platecontainer hasMany plates


货柜槽


ContainerSlot belongsTo plateContainer
ContainerSlot hasOne plate




如何(由id指定)如何获取所有number_of_slots,并检查其中哪些插槽已经为occupied,哪些不是。

因此,需要澄清更多。我要的是这样或类似的列表。

slots = [

 1 => false,
 2 => false,
 3 => true,
 4 => false
//etc

];


如果您对数据库结构有其他建议,请在评论中告知我。在用户为occupied选择slot之后,每次更新plate属性时,我都会有些怀疑。

最佳答案

Eloquent's collection methodspluck将为您提供帮助。假设您已经为上述每个表正确定义了模型,则可以执行以下操作:

PlateContainer::find($id)
              ->container_slots
              ->pluck('occupied', 'id');


这将以以下形式(基本上是数组)为您提供所需的预期结果:

=> Illuminate\Database\Eloquent\Collection {#1859
     all: [
       1 => true,
       2 => true,
       3 => false,
       4 => true
     ],
   }

10-08 14:16