我正在尝试在'CakePHP-3.5'中建立hasOne关系,并在下表之间建立Quantidade列的总和:
腰果:
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”,“ belongsTo”?
谢谢。