Поддержка Postgres JSONB на Zend / Db Zend Framework 3?

Как я могу работать с JSONB (postgresql) в Zend Framework 3?

например, я хочу сделать запрос, как это

SELECT id, data->'title' AS title, data->'description' as description FROM tablename

SELECT jsonb_array_elements_text(data->'tags') as tag FROM tablename WHERE id = 1;

Или ВЫПОЛНИТЬ функцию как

SELECT myFunction()jsonb_each(jsonb)INSERT INTO tablename VALUES (1,'{"title": "title 1","category":"category 2"}')UPDATE tablename SET data = jsonb_set(data,'{"image","quality"}','{" copyright":"company X","registered":true}') where id=2;

И Т.П.

У меня есть модель и только получить значение идентификатора

<?php
namespace EntityModel\Model;

class Entity
{
public $idEntity;
public $title;
public $description;
public $access;
public $category;
public $isVisible;
public $urlProyect;
public $urlDownload;
public $pedagogicUse;
public $PublicatorUser;
/**
* [exchangeArray description]
* @param  array  $data [description]
* @return [type]       [description]
*/
public function exchangeArray(array $data)
{
$this->id     = !empty($data['id']) ? $data['id'] : null;
$this->title = !empty($data['title']) ? $data['title'] : null;
$this->description  = !empty($data['description']) ? $data['description'] : null;
$this->access = !empty($data['access']) ? $data['access'] : null;
$this->category = !empty($data['category']) ? $data['category'] : null;
$this->isVisible = !empty($data['isvisible']) ? $data['isvisible'] : null;
$this->urlProyect = !empty($data['urlproyect']) ? $data['urlproyect'] : null;
$this->urlDownload = !empty($data['urldownload']) ? $data['urldownload'] : null;
$this->PedagogicUse = !empty($data['pedagogicUse']) ? $data['pedagogicUse'] : null;
$this->publicatorUser = !empty($data['publicatoruser']) ? $data['publicatoruser'] : null;
}
}

Я хочу вернуть объект jsonb в методе exchangeArray, например, id => 4, title => «title»

Как я могу реализовать эти идеи, я следую учебному пособию из ZF3, и я не знаю, как реализовать, возможно, здесь не место для этого вопроса, но я ценю, если вы дадите мне обратную связь, я не хочу использовать ORM для этого проекта. Спасибо

Это файл модели, который мы можем сделать запрос с помощью этих методов

class EntityTable
{
protected $tableGateway;
protected $dbAdapter;
public function __construct(TableGatewayInterface $tableGateway)
{
$this->tableGateway = $tableGateway;
$this->dbAdapter = $tableGateway->adapter;
}

public function getAllFromQuery()
{
$query = $this->dbAdapter->query("SELECT count(*) FROM tablename WHERE data ? 'isVisible';", Adapter::QUERY_MODE_EXECUTE);
$data = $query->toArray();

return $data;
}

это важно, чем вы заявили в своем адаптере БД

'db' => [
'driver' => 'Pgsql',  // pdo not support all the pg_ functions
'database' => 'database',
'username' => 'user',
'password' => 'pass'
]

В призыве к действию

public function indexAction()
{

return new ViewModel([
'data' =>$this->table->getAllFromQuery()
]);
}

и вид

<?= var_dump($this->data) ?>

И РЕЗУЛЬТАТ ЭТО ТАК

array(1) { [0]=> array(1) { ["count"]=> string(1) "6" } }

Ну, это хочу взять из базы данных, но как я могу передать массив данных в метод exchangeArray объекта?

я понял !!

public function getAllFromQuery()
{
$query = $this->dbAdapter->createStatement("SELECT id,
data->>'title' as title,
data->>'acess' as access,
data->>'category' as category
FROM tablename");
$data= $query->execute();
/* OR if you want execute a function from postgres */

//$query = $this->dbAdapter->query("SELECT totalregistrosdinamico('tablename')", Adapter::QUERY_MODE_EXECUTE);

$resultSetPrototype = new ResultSet();
$resultSetPrototype->initialize($data);
$resultSetPrototype->setArrayObjectPrototype(new Model\EntityName());
return $resultSetPrototype;

}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]