Мне нужно записывать в базу такие поля как id
, accessToken
, refreshToken
. Подскажите пожалуйста как можно это сделать средствами Symfony.
Entity:
<?php
namespace App\Portmone\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Search\Mapping\Annotations as MAP;
/***@ORM\Entity(repositoryClass="App\Repository\TransactionEntityRepository")
* @MAP\ElasticSearchable(index="portmone", type="transaction", source=true)
*/
class TransactionEntity
{
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @MAP\ElasticField(type="integer", includeInAll=true)
*/
private $id;
public function getId(): ?int
{
return $this->id;
}
/**
* @ORM\Column(type="integer")
* @MAP\ElasticField(type="integer", includeInAll=true, boost=5.0)
*/
private $sourceCardId;
public function getSourceCardId()
{
return $this->sourceCardId;
}
public function setSourceCardId(int $sourceCardId)
{
$this->sourceCardId = $sourceCardId;
return $this;
}
/**
* @ORM\Column(type="integer")
* @MAP\ElasticField(type="integer", includeInAll=true, boost=5.0)
*/
private $destinationCardId;
public function getDestinationCardId()
{
return $this->sourceCardId;
}
public function setDestinationCardId(int $destinationCardId)
{
$this->destinationCardId = $destinationCardId;
return $this;
}
/**
* @ORM\Column(type="float")
* @MAP\ElasticField(type="float", includeInAll=true, boost=5.0)
*/
private $transferredMoney;
public function getTransferredMoney(): ?float
{
return $this->transferredMoney;
}
public function setTransferredMoney(float $transferredMoney): self
{
$this->transferredMoney = $transferredMoney;
return $this;
}
/**
* @ORM\Column(type="datetime")
* @MAP\ElasticField(type="date", includeInAll=true, boost=5.0)
*/
private $transactionDate;
public function getTransactionDate()
{
return $this->transactionDate;
}
public function setTransactionDate($transactionDate)
{
$this->transactionDate = $transactionDate;
return $this;
}
}
Первым делам необходимо создать соответствующий маппинг в ES. Тут, наверное, останавливаться нет смысла. В документации много примеров.
Далее Симфони:
composer.json:
...
"require": {
...
"ruflin/elastica": "dev-master"
...
},
config/services.yaml
parameters:
elastic:
host: 127.0.0.1
port: 9200
services:
Elastica\Client:
arguments:
- '%elastic%'
App\Controller\HomeController:
arguments:
- '@Elastica\Client'
public: true
Контроллер:
<?php
namespace App\Controller;
use Elastica\Client;
use Elastica\Document;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
/**
* Class HomeController
* @package App\Controller
*/
class HomeController
{
/**
* @var Client
*/
private $client;
/**
* HomeController constructor.
*
* @param Client $client
*/
public function __construct(Client $client)
{
$this->client = $client;
}
/**
* @return Response
*/
public function indexAction(): Response
{
$document = new Document('1', [
'id' => 1,
'accessToken' => 'accessTokenValue',
'refreshToken' => 'refreshTokenValue',
], '_doc');
$res = $this->client->getIndex('test')->addDocuments([$document]);
return Response::create($res);
}
/**
* @param Request $request
*
* @return Response
*/
public function queryAction(Request $request): Response
{
$query = new \Elastica\Query($request->query->get('query'));
$res = $this->client->getIndex('test')->search($query);
$ress = $res->getResponse()->getData();
return Response::create(json_encode($ress));
}
}
Вы должны понимать, что это простой пример, возможно, вы в своей структуре организуете модели и прочее.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Занимаюсь парсингом постов инстаграмаЧерез некоторое время ссылки на посты становятся недействительными и даже получить пост по PrimaryKey...
проблема возникла в том, что нужно по отдельной ссылке выводить только акционные товары на этой же страницеФильтр выводится аяксовым методом...
Через какое то время работы сервера возникает ошибка при загрузке файлов