Học thuyết 2 ORM không hỗ trợ INSERT
qua DQL hoặc DQL query builder. Để có cú pháp hoàn chỉnh, hãy kiểm tra the EBNF of DQL.
Để xử lý chèn trong ORM, bạn luôn tự khởi tạo một thực thể và duy trì nó với người quản lý thực thể:
$user = new \My\Entity\User();
$entityManager->persist($user);
$entityManager->flush();
Bạn chỉ có thể xử lý SELECT
, UPDATE
và DELETE
qua DQL trong Học thuyết ORM:
Chọn:
SELECT u FROM My\Entity\User u WHERE u.id = :userId
Cập nhật:
UPDATE My\Entity\User u SET u.status = 'banned' WHERE u.id = :userId
Xóa
DELETE My\Entity\User u WHERE u.id = :userId
Bạn có thể xử lý các hoạt động này với QueryBuilder cũng như:
$queryBuilder = $entityManager->createQueryBuilder();
$queryBuilder
->select('u')
->from('My\Entity\User', 'u')
->where($queryBuilder->expr()->eq('u.id', ':userId'));
$queryBuilder = $entityManager->createQueryBuilder();
$queryBuilder
->delete('My\Entity\User', 'u')
->where($queryBuilder->expr()->eq('u.id', ':userId'));
$queryBuilder = $entityManager->createQueryBuilder();
$queryBuilder
->update('My\Entity\User', 'u')
->set('u.status', 'banned')
->where($queryBuilder->expr()->eq('u.id', ':userId'));
Bạn, dude, cần phải có một cái nhìn sâu để Symfony2, Giáo Lý và vân vân .... – DonCallisto