Preciso converter esta função do modelo Eloquent em uma consulta MySQL:
public function currentPrice(): HasOne
{
return $this->hasOne(Price::class)->ofMany([
'published_at' => 'max',
'id' => 'max',
], function(QueryBuilder $query) {
$query->where('published_at', '<', now());
});
}
Portanto, a consulta deve ser parecida com esta (faltando a lógica da relação HasOne acima que deveria estar na consulta):
SELECT items.id, items.article_name, prices.price, prices.published_at, weights.weight, weights.amount
FROM items
INNER JOIN prices ON items.id = prices.item_id
INNER JOIN weights ON items.id = weights.item_id
ORDER BY prices.published_at;
Obrigado
A consulta ao banco de dados é fornecida abaixo
Veja como expressar essa lógica usando SQL bruto :