PHP code example of wernerdweight / doctrine-crud-api-bundle
1. Go to this page and download the library: Download wernerdweight/doctrine-crud-api-bundle library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
wernerdweight / doctrine-crud-api-bundle example snippets
// config/bundles.php
return [
// ...
WernerDweight\DoctrineCrudApiBundle\DoctrineCrudApiBundle::class => ['all' => true],
];
use Doctrine\ORM\Mapping as ORM;
use WernerDweight\DoctrineCrudApiBundle\Entity\ApiEntityInterface;
use WernerDweight\DoctrineCrudApiBundle\Mapping\Annotation as WDS;
#[ORM\Table(name: "app_artist")]
#[ORM\Entity(repositoryClass: "App\Repository\ArtistRepository")]
#[WDS\Accessible()]
class Artist implements ApiEntityInterface
{
#[ORM\Column(name: "id", type: "guid")]
#[ORM\Id]
#[ORM\GeneratedValue(strategy: "UUID")]
private string $id;
#[ORM\Column(name: "name", type: "string", nullable: false)]
#[WDS\Listable(default: true)]
#[WDS\Creatable()]
#[WDS\Updatable()]
private string $name;
/**
* @var ArrayCollection|PersistentCollection
*/
#[ORM\OneToMany(targetEntity: "App\Entity\Track", mappedBy: "artist")]
#[WDS\Listable(default: true)]
#[WDS\Creatable(nested: true)]
#[WDS\Updatable(nested: true)]
private $tracks;
#[ORM\Column(name: "tags", type: "json", nullable: false, options: ["jsonb" => true])]
#[WDS\Listable(default: true)]
#[WDS\Metadata(payload: ["@request_stack.currentRequest.query.tagThreshold"])]
private array $tags;
#[WDS\Listable(default: true)]
private string $primaryTag; // this is unmapped, it doesn't have to be populated
...
public function getId(): string
{
return $this->id;
}
...
public function getTags(?string $tagThreshold = null): array
{
// only return tags with score higher than the provided threshold
if (null !== $tagThreshold) {
return array_filter(
$this->tags,
fn (string $tag): bool => $tag['score'] >= (float)$tagThreshold
);
}
return $this->tags;
}
public function getPrimaryTag(): string
{
// return the first tag (for simplicity, any logic can be here)
return $this->tags[0]['value'] ?? '';
}
...
}