Я пытаюсь выполнить левое соединение по запросу, но у меня недействительная ссылка на FROM-Clause, вот структура кода
это таблица продукта
CREATE TABLE products
(
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
title VARCHAR(255),
productdesc TEXT,
costprice DOUBLE PRECISION,
recommendprice DOUBLE PRECISION,
views BIGINT DEFAULT 0,
enabled BOOLEAN DEFAULT FALSE,
category_id BIGINT REFERENCES categories (id) ON DELETE CASCADE NOT NULL,
)
это таблица категорий
CREATE TABLE categories
(
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
pid BIGINT NOT NULL,
title VARCHAR(255),
image VARCHAR(255),
);
это структура типа
type Product struct {
TableName struct{} `sql:"products"`
ID int64 `json:"id"`
TITLE string `json:"title"`
PRODUCTDESC string `json:"product_desc"`
COSTPRICE float64 `json:"costprice"`
RECOMMENDPRICE float64 `json:"recommendprice"`
VIEWS int64 `json:"views"`
ENABLED bool `json:"enabled"`
CATEGORYNAME string `json:"categoryname"`
}
type Category struct {
tableName struct{} `pg:"categories"`
ID int64 `json:"id"`
Title string `json:"title"`
Image string `json:"image"`
}
это фактический запрос к базе данных
func (t *ProductRepo) GetAllProducts() ([]*domain.Product, error) {
var products []*domain.Product
query := t.DB.Model(&products).
ColumnExpr("products.*").
ColumnExpr("c.id AS category_id, c.title AS categoryname").
Join("LEFT JOIN categories AS c ON c.id = products.category_id")
err := query.Select()
if err != nil {
return nil, err
}
return products, nil
}
это фактическая ошибка из почтальон
{
"error": "ERROR #42P01 invalid reference to FROM-clause entry for table \"products\""
}
любая помощь будет отличной,
заранее спасибо
Джейсон