Как предварительно загрузить, используя, где не фильтруя данные - PullRequest
0 голосов
/ 26 февраля 2019

как работать с gorm с предзагрузкой и фильтрацией я застрял на некоторое время, может быть, может помочь мне

type JualmstModel struct {
    Trnjualmstoid int            `json:"jualid"`
    Trnno         string         `json:"jualno"`
    JualdtlModel  []JualdtlModel `gorm:"foreignkey:Trnjualmstoid;association_foreignkey:Trnjualmstoid"`
}

type JualdtlModel struct {
    Trnjualdtloid          int       `json:"jualdtlid"`
    Trnjualmstoid          int       `json:"jualid"`
    Item                   ItemModel `gorm:"foreignkey:itemoid;association_foreignkey:itemoid"`
    Itemoid                int       `json:"Itemoid"`
}

type ItemModel struct {
    Itemoid  string `json:"itemid"`
    Itemdesc string `json:"itemdesc"`
}

вот модель

DB.Find(b).
        Preload("JualdtlModel.Item", "itemdesc like ?", "%"+menu+"%").
        Find(b)

вот результат

 "jualid": 1,
      "jualno": "INV/201902/0001",
      "JualdtlModel": [
        {
          "jualdtlid": 1,
          "jualid": 1,
          "Item": {
            "itemid": "22",
            "itemdesc": "+ KEJU"
          },
          "Itemoid": 22
        },
        {
          "jualdtlid": 2,
          "jualid": 1,
          "Item": {
            "itemid": "",
            "itemdesc": ""
          },
          "Itemoid": 87
        },

Я хочу отфильтровать элемент по какому-либо пункту меню, но когда я добавляю элемент фильтра, он не фильтрует весь мой запрос

здесь результат отладки

SELECT * FROM [trnJualMst] 

SELECT * FROM [trnJualDtl]  WHERE ([trnjualmstoid] IN (1,2,3)) 

SELECT * FROM [mstItem]  WHERE ([itemoid] IN (87,85,18,12,75,22,19,37,44,36,28,29,92,54,34)) AND (itemdesc like '%keju%')

Чтоя могу сделать так, чтобы я мог загрузить только тот элемент, который находится в фильтре?

...