Eu sei que é possível e talvez eu já tenha feito isso, preciso refrescar a memória. Digamos que temos um para muitos
$post->comments
e quero comentários nesta postagem em que a data do comentário é maior que a data específica. Não quero obter essa data específica no valor php. Porque quero usá-lo como nome de coluna genérico.
$myComments = $post->comments->where('published', '>=', 'posts.updated_at');
Eu faço algo parecido, mas estou conseguindo
Coluna não encontrada
obrigado
Você tem 3 problemas aqui:
Primeiro,
$post->comments
é umCollection
, e não usa SQL , então nãoposts.updated_at
estará disponível, mas$post->updated_at
estaria.Em segundo lugar, Relacionamentos não usam
joins
, portanto,posts.updated_at
não estará disponível, a menos que você participe manualmente.Terceiro,
->where()
é umastring
correspondência, então sua consulta é literalmenteWHERE published = 'projects.updated_at'
, que retornará0
resultados. Você precisaria usar->whereColumn()
lá.Você pode resolver isso por comentários "Eager Loading" com essa
where()
cláusula:Ou mantenha a
->comments
sintaxe, mas passe o atributo, não o campo SQL:Ou, finalmente, use
->comments()
com a mesma sintaxe do Eager Loading: