pgsql查询问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pgsql查询问题相关的知识,希望对你有一定的参考价值。

如图,test表中三个字段,id int,list test[], arr varchar, 现在假设有5个点a,b,c,d,e,查询test表中,list字段或者arr字段中,包含这5个点中任意点的所有数据(就是包含这5个点中1个点就算)

参考技术A select * from test where
string_to_array('a,b,c,d,e',',') && arr
or
string_to_array('a,b,c,d,e',',') && list;

Laravel where 条件 - pgsql 查询

【中文标题】Laravel where 条件 - pgsql 查询【英文标题】:Laravel where condition - pgsql query 【发布时间】:2021-09-18 15:44:02 【问题描述】:

我想选择MaxFileSize列中的值,同一张表中FileType列的值等于$fileType。也就是说,在这个例子中,如果我输入的 uploadType 是 mp4 ,我需要得到结果(即 $maxSize )为 6。

$fileType=$request->uploadType;
$maxSize = Filesizes::where('FileType',$fileType)->get(['MaxFileSize']);

我已尝试上述代码,但无法使用此代码获得我想要的结果。请帮助我提出您的建议。

文件大小表

MaxFileSize FileType
6 mp4

上面的代码给出了这样的输出:

Illuminate\Database\Eloquent\Collection #1313
  #items: array:1 [
    0 => App\Models\Filesizes #1314
      #table: "filesizes"
      #fillable: array:1 [
        0 => "MaxFileSize"
      ]
      #connection: "pgsql"
      #primaryKey: "id"
      #keyType: "int"
      +incrementing: true
      #with: []
      #withCount: []
      +preventsLazyLoading: false
      #perPage: 15
      +exists: true
      +wasRecentlyCreated: false
      #attributes: array:1 [
        "MaxFileSize" => 6
      ]
      #original: array:1 [
        "MaxFileSize" => 6
      ]
      #changes: []
      #casts: array:1 [
        "deleted_at" => "datetime"
      ]
      #classCastCache: []
      #dates: []
      #dateFormat: null
      #appends: []
      #dispatchesEvents: []
      #observables: []
      #relations: []
      #touches: []
      +timestamps: true
      #hidden: []
      #visible: []
      #guarded: array:1 [
        0 => "*"
      ]
      #forceDeleting: false
    
  ]

【问题讨论】:

什么是错误和你想要实现什么。所以有人可以帮助你 @JohnLobo 请查看更新后的问题。我已经添加了我正在输入的输出。对于我给出的示例,如果我输入的 uploadType 是 mp4 ,我需要得到结果(即 $maxSize )为 6。 $maxSize = Filesizes::where('FileType',$fileType)->get(['MaxFileSize','FileType']); 如果你想读取格式然后 dd($maxSize->toArray()); @JohnLobo 我试过这个 - dd($maxSize->toArray()); 。但它显示了这样的输出 - array:1 [ 0 => array:1 [ "MaxFileSize" => 6 ] ] 。但是,我需要的输出只是 6。 【参考方案1】:

要直接从一个查询中获取值,请使用方法value()

$maxSize = Filesizes::where('FileType',$fileType)->value('MaxFileSize');

【讨论】:

以上是关于pgsql查询问题的主要内容,如果未能解决你的问题,请参考以下文章

PgSQL如何优雅的加模糊查询索引

pgsql (PostgresSQL) 查询的时候忽略大小写

Pl/pgSQL 匿名代码块在 [42601] 错误上失败:查询没有结果数据的目的地

pgsql查询问题

PL/pgSQL 代码的问题

使用 PL/pgSQL 将查询结果存储在变量中