엔티티 엔티티 관리자 저장소 서비스 nedir?
예를 들어 엔터티 엔터티 관리자 리포지토리와 서비스가 제공됩니다.
Entity veritabanımız ile kod arasında ilişki kurmamızı sağlayan kalıcı nesneler olarak tanımlanabilir.
Örneğin veritabanımızda
user
타블로순다 id
, name
veage
오래된 바르사얄림. Bu tabloya kodda erişmek için bir entity yazalım./**
* @Entity(repositoryClass="App\Repositories\UserRepository")
* @Table(name="users")
*/
class User
{
/**
* @var int
* @Column(name="id", type="integer", nullable=false)
* @Id
* @GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string|null
*
* @Column(name="name", type="string", length=100, nullable=true)
*/
private $name;
/**
* @var int|null
*
* @Column(name="age", type="integer", nullable=true)
*/
private $age;
bu kısımda tablomuzdaki columnları özellikleri ile tanlımladık. Şimdi ise getters ve setters'larını yazıp entity'mizi hazır hale getireceğiz.
public function getId(): int
{
return $this->id;
}
public function setId(int $id): void
{
$this->id = $id;
}
public function getAge(): ?int
{
return $this->age;
}
public function setAge(?int $age): void
{
$this->age = $age;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(?string $name): void
{
$this->name = $name;
}
EntityManager는 엔티티 관리자가 액세스할 수 있는 도구를 제공하기 위해 사용됩니다.
Oluşturduğumuz User entity'si için bir insert işlemi yapmak istediğimizde
public function insert()
{
$user = new User();
$user->setName('alperen');
$user->setAge('17');
$this->getEntityManager()->persist($user);
}
EntityManager'n bize sağlamış olduğu sayesinde tablomuz eni bir kayıt ekledik.
Repository temel olarak veritabanı soorgulama işlemlerinin bir merkezden yapılmasını sağlayarak iş katmanına taşınmasını önler ve bu şekilde sorgu ve kod tekrarına engel olmuş olur. Yani asıl amaç veri işlem ve soorgulamaların tekrarlardan kaçınılarak merkezi bir yapıya çekilmesidir.
Repositorylerin en iyi özelliği ise find, findby, findOneBy ve findAll gibi query methodlarına sahip olması.
Örneğin 사용자 tablosundan yaşı 17 olanları listelemek istediğimiz zaman;
$entityManager->getRepository(User::class)->findby([
'age' => 17
]);
Service, general bir görevi gerçekleştirmesi için oluşturduğumuz koddur.
Mesela insert ve update işlemlerinde girilen yaş 18 den küçükse yani çocuk ise sisteme kayıt olmamalı.
bu işlem için hem insert hemde update fonksiyonunda aynı kodu yazmak gerekir.
Bunun yerine bir UserService oluşturup içerisine isChild fonksiyonunu yazalım.
public function isChild($age): bool
{
if($age > 18) {
return true;
} else {
return false;
}
}
Daha sonra yazdığımız bu kodu kullanalım.
public function insert()
{
/** @var UserService $userService */
$userService = $this->container->get(UserService::class);
if($userService->isChild($age))
{
$user = new User();
$user->setName('alperen');
$user->setAge('17');
$this->getEntityManager()->persist($user);
}
}
Aynı işlemi update içinde yaptığımız zaman benzer kodları tekrar tekrar kullanmamış ve daha düzenli bir koda sahip olacağız.
Reference
이 문제에 관하여(엔티티 엔티티 관리자 저장소 서비스 nedir?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/milkitea/entity-entity-manager-repository-service-nedir-4p4c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)