带有Laravel的Postgresql:使用子字符串过滤Json字段

时间:2019-06-27 04:16:34

标签: laravel postgresql orm

我有一个表post_media,其中有一个JSON列metadata。现在,metadata JSON有一个字段originalName,该字段具有文件/媒体的全名,例如:test.png。 各种文件都可以在其中找到:.png,.jpeg,.mov,.pdf,.ppt,.doc等 我想选择仅从表中查找png文件。该扩展名没有单独的列。

我已经使用asmutator在虚拟列中进行了尝试。但是where无法使用虚拟列。

$post_media = PostMedia::select(\DB::raw("metadata->>'originalName' from '\.([^\.]*)$') as file_extention"))->where('file_extention', 'png')->get();

我想要所有PNG扩展名文件。有想法吗?

1 个答案:

答案 0 :(得分:2)

您所能做的就是将您的正则表达式条件放在如下所示的条件下。

class LessonDeleteView(DeleteView):

    model = Lesson
    success_url = '../'
    template_name = 'lesson_confirm_delete.html'

    def delete(self, request, *args, **kwargs):
        self.object = self.get_object()
        self.object.file.delete()  # <-- added file delete code
        success_url = self.get_success_url()
        self.object.delete()
        return HttpResponseRedirect(success_url)

它将为您提供帮助。