PostgreSQL表中的JSON数据的搜索列

时间:2016-04-14 08:54:22

标签: php json postgresql laravel laravel-5.2

我需要在PostgreSQL表中存储一些JSON数据,以将其用作动态路由生成器。迁移很简单:

Schema::create($this->tablename, function (Blueprint $table)
{
    $table->increments('id');
    $table->string("uri", 123);
    $table->json("middleware")->nullable();
    $table->string("as", 123)->nullable();
}

我以这种方式存储数据:

$a = new Route();
$a->uri = "/test1";
$a->middleware=json_encode(["auth","web"]);
$a->as = "TestController@test";
$a->save();

所以我想说我需要过滤所有拥有auth中间件的路由。我该怎么办?

当我尝试

Route::where('middleware', 'AS', 'auth')->get();

......我收到错误。是否有可能像那样使用它?

我使用 Laravel 5.2 PostgreSQL 9.3.12

修改

如果您使用的是 PostgreSQL 9.4 或更高版本,并且Laravel框架的版本大于 5.2.29 ,则可以使用以下语法:

Route::where('middleware','@>','"auth"')->get();

1 个答案:

答案 0 :(得分:1)

更改whereRaw的位置并查询json字段

form

或者

function form(name, callback) {
  return server.getForm(name).then(function(response) {
    return callback(response.formFields);
  }).then(function (data) {
    return server.submitForm(name, data);
  }).catch(function(e) {
    console.error(e); // or display it in the form, or whatever
  });
}

function main() {
  return form('example', function(fields) {
    return new Promise(function(resolve, reject) {
      var dialog = ui.formDialog(fields);
      dialog.addButton('submit', resolve);
      dialog.show();
    });
  });
}