Автоотношение с суммой в cakephp3
Я пытаюсь создать отношение hasOne в CakePHP-3.5 с суммой столбца quantidade между следующими таблицами:
brindes:
Field Type
------------------------ ----------------------------------------------
id bigint(20) unsigned
clientes_id bigint(20) unsigned
nome varchar(45)
codigo_primario tinyint(1)
tempo_uso_brinde tinyint(2)
ilimitado tinyint(1)
habilitado tinyint(1)
tipo_equipamento enum('Produtos/Serviços','Equipamento')
tipo_venda enum('Isento','Com Desconto','Gotas ou Reais')
tipo_codigo_barras enum('QRCode','Code128','PDF417')
preco_padrao float
valor_moeda_venda_padrao decimal(10,2)
nome_img varchar(80)
audit_insert datetime
audit_update datetime
brindes_estoque;
FIELD TYPE
------------- ------------------------------------------------------------------------------------------
id BIGINT(20) UNSIGNED
brindes_id BIGINT(20) UNSIGNED
usuarios_id BIGINT(20) UNSIGNED
quantidade INT(11)
tipo_operacao ENUM('Inicialização','Adicionado ao Estoque','Saída Brinde','Saída Venda','Retornado')
DATA DATETIME
audit_insert DATETIME
audit_update DATETIME
"Brindes" (Подарки) имеет "много Brindes_estoque (Gifts_Stock). Вот что я пытаюсь сделать:
$this->hasOne(
"TotalEntrada",
array(
"className" => "BrindesEstoque",
"foreignKey" => "brindes_id",
"joinType" => Query::JOIN_TYPE_LEFT,
"strategy" => "select",
"fields" => array(
"qteEntrada" => "SUM(TotalEntrada.quantidade)"
),
"conditions" => array(
"TotalEntrada.tipo_operacao" => TYPE_OPERATION_ADD_STOCK
)
)
);
С другой таблицей brindes_precos (Gifts_Prices) я могу взять последнюю запись, вставленную в базу данных, используя это соотношение:
Отношения:
$this->hasOne(
"PrecoAtual",
array(
"className" => "BrindesPrecos",
"foreignKey" => "brindes_id",
"joinType" => Query::JOIN_TYPE_LEFT,
"strategy" => "select",
"conditions" => array(
"PrecoAtual.status_autorizacao" => STATUS_AUTHORIZATION_PRICE_AUTHORIZED
),
"ORDER" => array(
"data" => "DESC"
),
"limit" => 1
)
);
Таблица brindes_precos:
Field Type
------------------ ----------------------------------------
id bigint(20) unsigned
brindes_id bigint(20) unsigned
clientes_id bigint(20) unsigned
preco float
valor_moeda_venda decimal(10,2)
status_autorizacao enum('Aguardando','Autorizado','Negado')
data_preco datetime
audit_insert datetime
audit_update datetime
Эти отношения "PrecoAtual" дают мне что-то вроде:
SELECT
PrecoAtual.id AS `PrecoAtual__id`,
PrecoAtual.brindes_id AS `PrecoAtual__brindes_id`,
PrecoAtual.clientes_id AS `PrecoAtual__clientes_id`,
PrecoAtual.preco AS `PrecoAtual__preco`,
PrecoAtual.valor_moeda_venda AS `PrecoAtual__valor_moeda_venda`,
PrecoAtual.status_autorizacao AS `PrecoAtual__status_autorizacao`,
PrecoAtual.data_preco AS `PrecoAtual__data_preco`,
PrecoAtual.audit_insert AS `PrecoAtual__audit_insert`,
PrecoAtual.audit_update AS `PrecoAtual__audit_update`
FROM brindes_precos PrecoAtual
WHERE (PrecoAtual.status_autorizacao = 'Autorizado' AND PrecoAtual.brindes_id in (15))
Я думаю, что главный вопрос... я могу сделать что-то подобное? Второй вопрос: есть ли способ сделать отношения hasOne, ownTo с префиксными столбцами?
Заранее спасибо.