У меня 2 простые модели.Первый называется Builds (mysql), а второй - SlotOptions (mongodb).Каждая сборка может иметь 5 назначенных слотов.На основании https://stackoverflow.com/a/55132863/2513428
select * from `builds` where `builds`.`id` = 37 limit 1
SlotOptions.find({"heroName":{"$in":[37]}},{"typeMap":{"root":"array","document":"array"}})
Таблица. build_slot_option (mysql)
+----------------+--------+----------------------------------------+
| Name | Type | Desc |
+----------------+--------+----------------------------------------+
| slot_option_id | char50 | // FK, Name of slot option f.e "Hero1" |
| build_id | int | // FK, Build id |
| pos | int | // Number 1-5 |
+----------------+--------+----------------------------------------+
slot_option_id - это строка, содержащая имя героя, на самом деле это не идентификатор.
Пример :
+----------------+----------+-----+
| slot_option_id | build_id | pos |
+----------------+----------+-----+
| Hero1 | 37 | 1 |
| Hero2 | 37 | 2 |
| Hero3 | 37 | 3 |
| Hero4 | 37 | 4 |
| Hero5 | 37 | 5 |
+----------------+----------+-----+
Таблица. Сборки (mysql)
+------+------+------------------------+
| Name | Type | Desc |
+------+------+------------------------+
| id | int | // PK, of Builds Table |
| ... | ... | // and other columns |
+------+------+------------------------+
Это класс сборки и пример использования.
class BuildDB extends Model
{
use HybridRelations;
protected $connection = 'mysql';
public function slots()
{
return $this->belongsToMany(
SlotOptions::class, 'build_slot_option', 'build_id', 'slot_option_id'
);
}
}
BuildDB::with('slots')->find(5);
Когда дело касается второго запроса, он должен не вставляйте идентификатор сборки туда {"$in":[37]}
только все имена слотов, из столбца tb build_slot_option slot_option_id .Например {"$in":['Hero1','Hero2']}