【发布时间】:2019-06-27 04:16:34
【问题描述】:
我有一个表说post_media,它有一个 JSON 列metadata。现在,metadata JSON 有一个字段为 originalName,它具有文件/媒体的全名,例如:test.png。
所有类型的文件都有:.png、.jpeg、.mov、.pdf、.ppt、.doc 等
我想从表中选择仅查找 png 文件。扩展没有单独的列。
我已经尝试使用as 和mutator 处理虚拟列。但是where 不能使用虚拟列。
$post_media = PostMedia::select(\DB::raw("metadata->>'originalName' from '\.([^\.]*)$') as file_extention"))->where('file_extention', 'png')->get();
我想要所有 PNG 扩展文件。有什么想法吗?
【问题讨论】:
-
有几件事要记下来。如果您创建虚拟列,则不能将该虚拟列置于 where 条件中。你可以试试。
-
@narayansharma91,不适合拥有。显示相同的错误:-
SQLSTATE[42703]: Undefined column: 7 ERROR: column "file_extension" does not exist
标签: laravel postgresql orm