我正在使用 Postgres JSONB,以便在一个复杂系统的一个字段中存储一堆属性。
我有一个字段,称为属性,属性确实有对象树。
这是来自属性的一小部分数据。
{
"urls": [],
"games": false,
"images": [],
"rating": null,
"founded": 0,
"bannedIn": ["00000000-0000-0000-8888-000000000001",
"00000000-0000-0000-8888-000000000002"],
"comments": "",
"chat": false
}
Run Code Online (Sandbox Code Playgroud)
在表中,我有一些对象被禁止在某些 guids 中,一些对象有空数组,而一些对象根本没有bannerIn 属性。
现在我试图获取bannedIn包含的每一行"00000000-0000-0000-8888-000000000001"(WORKS)
当我尝试获取bannedIn不包含的每一行时"00000000-0000-0000-8888-000000000001"(WORKS)
但是当我查询计算所有没有bannedIn的属性时,它会以0计数回退,即使我有1K个没有bannedIn的对象。
作品
$builder = $entityManager->createQueryBuilder()
->select('e')
->from(Entity::class, 'e')
->where('e.otherObject = :guid')->setParameter('guid', $guid)
->andWhere('GET_JSON_FIELD(e.properties, \'bannedIn\') LIKE ?1')
->setParameter(1, '%00000000-0000-0000-8888-000000000001%');
Run Code Online (Sandbox Code Playgroud)
有没有办法在key不存在的情况下查询jsonb?我也试过跟随,没有奏效。这 ?操作符是通过调用它的函数来实现的jsonb_exists(column_name, value)
在暂存和生产环境中,当我尝试从.env文件获取自定义变量时,它返回null.我尝试创建新的APP键并清除所有类型的缓存,但结果是一样的.
APP_NAME="App - Staging"
APP_ENV=staging
APP_KEY=<HIDDEN_KEY>
APP_DEBUG=true
APP_LOG_LEVEL=none
APP_URL=https://staging.app.com
APP_BASE_URL="https://app-staging.app.com"
Run Code Online (Sandbox Code Playgroud)
清除缓存
php artisan config:clear
php artisan cache:clear
php artisan route:clear
php artisan view:clear
php artisan config:cache
Run Code Online (Sandbox Code Playgroud)
但是在刀片视图中使用以下内容时什么都没有
env('APP_BASE_URL') returns null
Run Code Online (Sandbox Code Playgroud) 我遵循了 Laravel 官方文档以及以下文章 https://medium.com/techcompose/create-rest-api-in-laravel-with-authentication-using-passport-133a1678a876
注册工作正常并返回令牌登录工作正常并返回令牌但是当我按照以下方式使用它时得到未经身份验证。
curl -X POST \
http://api.local/api/details \
-H 'Accept: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjY0YmE0ZTUxMzBhYWQwYzdmZWVkODRhYTZhNzI4YjE2YjE1NWJhYzA0YmQwMmIxYWZjMGU3NTVjYzk1Y2QwYzY3ZWMzNTRlNzA1MTg0YjY4In0.eyJhdWQiOiIxIiwianRpIjoiNjRiYTRlNTEzMGFhZDBjN2ZlZWQ4NGFhNmE3MjhiMTZiMTU1YmFjMDRiZDAyYjFhZmMwZTc1NWNjOTVjZDBjNjdlYzM1NGU3MDUxODRiNjgiLCJpYXQiOjE1Mzc4NzIxNjcsIm5iZiI6MTUzNzg3MjE2NywiZXhwIjoxNTY5NDA4MTY3LCJzdWIiOiIwIiwic2NvcGVzIjpbXX0.GHGKOiWm_8gr4Hib0ZtCq_FdQSDAntPl2zPIHkkTfTien1PHCoE79S7MdZRdEhjxt5Ds5E2JXhajfa9rDfiXHzKGtmzcRD_VYYxKnWupnhiMlJeHJsmXaWKLjYIw3InQYZtV_cYdcXlYWTDWcCOR1Xr7ezkYECz16oOumtgarPxVRZTHehpj4WiRDDgB4VTRZiRfsHYxMruh55wuT8OkbUAOalRaqwwxfplLYwdfTAcu4vUdwPfswu2_eZ6l1b_8Jd8Jsk5niXROQ7pIAL1oYX0V_HbNz9YkrlbiZN-w9FoM3fMZpYL7hcg1Jcocd7dGPUkcGaMOMjjcRuj5XAKEJOZbQlxs0n5wo4W3Sz11bnO4dRetTj9hyF97QDoaHFduPj4tnn6lItRbBGjQTGy_5qNlckhXxRYTlsYUZ6oNUUU2bUV_hBdklYRCtWgY1DY-Ds0DVhuujea9_u0w0swDwRh5VlV_gQaKEO0sEv-fzg_23UdPpfHgaG8-NHTYs5LsRSNS1iz4hpXuTjZzUOBsAk_k-V13wjeeXElLxy2PgN5s87IVJPEvDtd5F89PjzvaDHM5wsYwmUlnCnzBa8ZEtG8Wj62qBY_RooBmSNzWlT62SpJDbs25GaWOf8y7EtuICcuaOg7bMoGICKJc4GmkK_ltk-M7WieJD95InnWBJ-E'
Run Code Online (Sandbox Code Playgroud)
返回
{
"error": "Unauthenticated."
}
Run Code Online (Sandbox Code Playgroud)
路线:
Route::post('login', 'API\UserController@login');
Route::post('register', 'API\UserController@register');
Route::group(['middleware' => 'auth:api'], function(){
Route::post('details', 'API\UserController@details');
});
Run Code Online (Sandbox Code Playgroud)
身份验证服务提供者:
public function boot()
{
$this->registerPolicies();
Passport::routes();
Passport::tokensExpireIn(Carbon::now()->addYear(21));
Passport::refreshTokensExpireIn(Carbon::now()->addYear(30));
}
Run Code Online (Sandbox Code Playgroud)
配置/auth.php
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
Run Code Online (Sandbox Code Playgroud)
任何想法,为什么 /details 请求没有通过有效令牌进行身份验证事件?