小编f7n*_*f7n的帖子

Postgres - 如何对 JSONB 字段执行 LIKE 查询?

我有一个名为 的 jsonb 字段passengers,其结构如下:

请注意,persons 是一个数组

{
    "adults": {
        "count": 2,
        "persons": [
            {
                "age": 45,
                "name": "Prof. Kyleigh Walsh II",
                "birth_date": "01-01-1975"
            },
            {
                "age": 42,
                "name": "Milford Wiza",
                "birth_date": "02-02-1978"
            }
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

如何针对此 JSONB 的名称字段执行查询?例如,要选择与名称字段匹配的所有行Prof

这是我的初步尝试:

SELECT passengers from opportunities
WHERE 'passengers->adults' != NULL
AND 'passengers->adults->persons->name' LIKE '%Prof';
Run Code Online (Sandbox Code Playgroud)

这会返回 0 行,但正如您所看到的,我有一行的名称为Prof. Kyleigh Walsh II

postgresql jsonb postgresql-9.6

10
推荐指数
1
解决办法
9519
查看次数

如何在 Laravel 中创建和使用自定义每日日志文件?

在 Laravel 中,我在以下位置定义自定义日志文件/config/logger.php

'mycustomlog' => [
  'driver' => 'stack',
  'path' => storage_path('logs/mycustomlog.log'),
  'level' => 'info',
],
Run Code Online (Sandbox Code Playgroud)

这是我的上下文堆栈驱动程序:

'stack' => [
  'driver' => 'stack',
  'channels' => ['daily', 'syslog'],
  'ignore_exceptions' => false,
],
Run Code Online (Sandbox Code Playgroud)

我这样称呼它:

Log::channel('mycustomlog')->info($e);


我期望发生什么:

创建(每日)日志文件并记录异常。IEmycustomlog-2019-11-07.log

实际发生的情况:

未创建日志文件,但会记录以下错误laravel.log

[2019-11-07 10:25:31] laravel.EMERGENCY: Unable to create configured logger. Using emergency logger. {"exception":"[object] (ErrorException(code: 0): Undefined index: channels at /var/www/vendor/laravel/framework/src/Illuminate/Log/LogManager.php:232)
Run Code Online (Sandbox Code Playgroud)

解决方案:

'mycustomlog' => [
   'driver' => 'daily',
   'channels' => ['syslog'],
   'path' => storage_path('logs/mycustomlog.log'),
   'level' => 'info',
],
Run Code Online (Sandbox Code Playgroud)

php logging laravel

8
推荐指数
1
解决办法
6640
查看次数

Neo4j - 是否可以直观地概述我的数据库?

我有我的图形数据库,填充了节点,关系,属性等.我希望看到整个数据库如何连接,每个节点的每个关系,节点的属性等的概述.

我并不是指查看每个单独的节点,而是来自关系数据库的ERD,类似这样的节点标签.这可能吗?

在此输入图像描述

diagram erd visualize neo4j

7
推荐指数
3
解决办法
3539
查看次数

如何使用 jwt-auth 在 Laravel 中正确设置 JWT 机密?

我想在我的项目中测试 JWT 的身份验证,因为 JWT 将从应用程序外部发送,因此必须使用我的应用程序中的密钥对它们进行签名。这可能吗?有谁知道允许您使用秘密签署令牌的网站?

我试过http://jwtbuilder.jamiekurtz.com/{"error":"token_invalid"}如果我输入由jwt:generate. 这使我相信此命令返回的密钥实际上并不是用于在我的应用程序中对 JWT 进行签名的密钥。

我正在使用php artisan jwt:generate生成一个密钥,它返回以下内容:

jwt-auth secret [...] set successfully.
Run Code Online (Sandbox Code Playgroud)

但是它在哪里设置?JWT_SECRET我的 .ENV 文件中的变量不会改变,如果我对密钥执行项目范围的搜索,则找不到它。

这个命令有效吗?

Laravel 5.3,jwt-auth 0.5.9。

php jwt laravel

5
推荐指数
2
解决办法
2万
查看次数

如何验证整个请求是 Laravel 中的数组?

我需要验证请求的 JSON 正文,它必须是一个数组。

我知道我可以将各个字段验证为数组,如下所示:

$request->validate([
    'name' => ['required', 'array'],
]);
Run Code Online (Sandbox Code Playgroud)

但是我如何验证整个请求是一个数组而不是一个对象?

validation laravel

5
推荐指数
1
解决办法
249
查看次数

如何获得Sinatra的当前路线/路线?

我希望在我的一个视图中获取当前路径/路径以用于if statmenent.

例如,我想要实现这样的事情:

example.erb:

<h4>Foobar<h4>
<p>foo bar foo bar foo bar</p>
<% if current_route == /hello %>
  <%= erb :_hello %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

app.rb:

get '/foobar' do
  erb :example
end

get '/hello' do
  erb :example
end
Run Code Online (Sandbox Code Playgroud)

这样,两条路线转到同一视图,但如果通过途径访问/hello,它将_hello.erb在视图上呈现额外的部分.

这在Sinatra有可能吗?实现它的最佳方法是什么?

ruby render path sinatra

4
推荐指数
1
解决办法
5139
查看次数

从Laravel中的hasMany关系返回第一个模型

是否可以创建一种快速的方法来从一对多关系中返回第一个模型?这是我的代码,来自模型文件:

public function books() {
    return $this->hasMany('App\Models\Book');
}

public function first_book() {
    return $this->book()->first();
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

'Call to undefined method Illuminate\Database\Query\Builder::addEagerConstraints()'

我想使用它的原因是为了可以使用with()方法收集第一条记录,例如:

    $authors = Author::with('first_book')->select('*');
Run Code Online (Sandbox Code Playgroud)

我正在将这些记录与数据表一起使用。

datatables laravel eloquent

3
推荐指数
4
解决办法
1万
查看次数

Laravel/DataTable 无法显示约 80,000 行

我尝试使用 DataTables 与服务器端处理来显示 80,000 行(分页),但 Laravel 崩溃并出现以下错误:

PHP Fatal error: Maximum execution time of 300 seconds exceeded in /Users/fin/Documents/dev/evway-new/vendor/nesbot/carbon/src/Carbon/Carbon.php on line 291

这是我获取行的控制器方法:

public function data()
{
    $employees = Employee::get(); // ~80,000 employees

    return Datatables::of($employees)
        ->edit_column('created_at',function(Employee $employee) {
            return $employee->created_at->diffForHumans();
        })
        ->add_column('actions',function($employee){
            $actions = '<a href='. route('admin.employees.show', $employee->id) .'><i class="livicon" data-name="info" data-size="18" data-loop="true" data-c="#428BCA" data-hc="#428BCA" title="view employee"></i></a>
                        <a href='. route('admin.employees.edit', $employee->id) .'><i class="livicon" data-name="edit" data-size="18" data-loop="true" data-c="#428BCA" data-hc="#428BCA" title="update employee"></i></a>';

            $actions .= '<a href='. route('admin.employees.clone', $employee->id) .' data-target="#clone"><i class="livicon" …
Run Code Online (Sandbox Code Playgroud)

php datatable large-data-volumes laravel

2
推荐指数
1
解决办法
3321
查看次数

Laravel -WhereExists 返回“无效参数号:参数未定义”

whereExists()我正在尝试在现有的 Eloquent 查询生成器(称为)上使用$trips

$trips = $trips->whereExists(function ($query) use ($filterValue) {
             $query->from(DB::raw("jsonb_array_elements(passengers->'adults'->'persons') as p(person)"))
                   ->whereRaw("p.person->>'name' LIKE '?%'", $filterValue);
});
Run Code Online (Sandbox Code Playgroud)

我尝试以原始 postgres 格式创建的查询如下(此查询使用 pgAdmin 可以正常工作):

SELECT * 
from trips
WHERE exists (select * 
              from jsonb_array_elements(passengers -> 'adults' -> 'persons') as p(person)
              where p.person ->> 'name' LIKE 'Prof%');
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Invalid parameter number: parameter was not defined

我觉得问题很小,但是我自己看不出来。

postgresql laravel eloquent

1
推荐指数
1
解决办法
807
查看次数

向Laravel模型添加过滤器辅助方法

我想在Laravel Product模型中添加一个方法,该方法按nameattr 过滤并返回所有匹配产品的集合,这就是我得到的:

Product.php

public function filterByName($query)
{
    return $this->where('name','LIKE','%'.$query.'%')->get();
}
Run Code Online (Sandbox Code Playgroud)

ProductController.php

$products = collect(new Product);
$products->filterByName($name);
Run Code Online (Sandbox Code Playgroud)

正确的用法是什么?我需要使用QueryFilter吗?

php laravel eloquent eloquent-relationship laravel-5.8

0
推荐指数
1
解决办法
32
查看次数