我需要获得symfony 2.7实体内表的最大ID。但不是有ID,我得到这个问题。
注意:未定义属性:AppBundle\Entity\BlogPost::$container
这是我的BlogPost实体,
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\HttpFoundation\File\UploadedFile;
/**
* BlogPost
*
* @ORM\Table()
* @ORM\Entity
*/
class BlogPost {
const SERVER_PATH_TO_IMAGE_FOLDER = '/uploads';
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="title", type="string", length=255)
*/
private $title;
/**
* @var string
*
* @ORM\Column(name="body", type="text")
*/
private $body;
/**
* @var string
*
* @ORM\Column(name="filename", type="text")
*/
private $filename;
/**
* Set filename
*
* @param string $filename
* @return BlogPost
*/
public function setFilename($filename) {
$this->filename = $filename;
return $this;
}
public function setUploader(UploadedFile $file) {
$em = $this->container->get('doctrine.orm.entity_manager');
$highest_id = $em->createQueryBuilder()
->select('MAX(b.id)')
->from('AppBundle:BlogPost', 'b')
->getQuery()
->getSingleScalarResult();
var_dump($highest_id);
exit();// exit for check value
$url = 'uploads/events';
$file_name = 'fsdf.' . $file->guessExtension();
$file->move($url, $file_name);
}
/**
* Get filename
*
* @return string
*/
public function getFilename() {
return $this->filename;
}
/**
* @var boolean
*
* @ORM\Column(name="draft", type="boolean")
*/
private $draft;
/**
* Get id
*
* @return integer
*/
public function getId() {
return $this->id;
}
/**
* Set title
*
* @param string $title
* @return BlogPost
*/
public function setTitle($title) {
$this->title = $title;
return $this;
}
/**
* Get title
*
* @return string
*/
public function getTitle() {
return $this->title;
}
/**
* Set body
*
* @param string $body
* @return BlogPost
*/
public function setBody($body) {
$this->body = $body;
return $this;
}
/**
* Get body
*
* @return string
*/
public function getBody() {
return $this->body;
}
/**
* Set draft
*
* @param boolean $draft
* @return BlogPost
*/
public function setDraft($draft) {
$this->draft = $draft;
return $this;
}
/**
* Get draft
*
* @return boolean
*/
public function getDraft() {
return $this->draft;
}
/**
* @ORM\ManyToOne(targetEntity="Category", inversedBy="blogPosts")
*/
private $category;
public function setCategory(Category $category) {
$this->category = $category;
}
public function getCategory() {
return $this->category;
}
/**
* Unmapped property to handle file uploads
*/
public $file;
/**
* Sets file.
*
* @param UploadedFile $file
*/
public function setFile(UploadedFile $file = null) {
$this->file = $file;
}
/**
* Get file.
*
* @return UploadedFile
*/
public function getFile() {
return $this->file;
}
/**
* Manages the copying of the file to the relevant place on the server
*/
public function upload() {
// the file property can be empty if the field is not required
if (null === $this->getFile()) {
return;
}
// we use the original file name here but you should
// sanitize it at least to avoid any security issues
// move takes the target directory and target filename as params
$this->getFile()->move(
self::SERVER_PATH_TO_IMAGE_FOLDER, $this->getFile()->getClientOriginalName()
);
// set the path property to the filename where you've saved the file
$this->filename = $this->getFile()->getClientOriginalName();
// clean up the file property as you won't need it anymore
$this->setFile(null);
}
/**
* Lifecycle callback to upload the file to the server
*/
public function lifecycleFileUpload() {
$this->upload();
}
/**
* Updates the hash value to force the preUpdate and postUpdate events to fire
*/
public function refreshUpdated() {
// $this->setUpdated(new \DateTime());
}
// ... the rest of your class lives under here, including the generated fields
// such as filename and updated
}
这就是我想得到最大身份证的部分
public function setUploader(UploadedFile $file) {
$em = $this->container->get('doctrine.orm.entity_manager');
$highest_id = $em->createQueryBuilder()
->select('MAX(b.id)')
->from('AppBundle:BlogPost', 'b')
->getQuery()
->getSingleScalarResult();
var_dump($highest_id);
exit();// exit for check value
$url = 'uploads/events';
$file_name = 'fsdf.' . $file->guessExtension();
$file->move($url, $file_name);
}
在评论和一些研究的帮助下,我发现问题出在“entity_manager”部分。有没有一种方法可以在Entity内部调用教义查询?
4条答案
按热度按时间iqjalb3h1#
如果我是你,我会这样做:
控制器:
仓库:
实体:
它应该工作
sr4lhrrt2#
我建议将
EntityManager
作为class variable
保存在Entity
中,并通过constructor
或通过setter-method
示例化它,在使用setRenderader函数之前调用setter-method
。这应该是最清晰和最好的可读解决方案。
oxalkeyp3#
在您的 * 控制器 * 中尝试以下操作:
tsm1rwdh4#
从另一个线程我发现了这个,它为我工作。
我不能在控制器中使用它,因为我有一个管理类而不是控制器。因为很多人建议在实体中使用实体_管理器不是好的做法,我使用管理类中的代码而不是实体。
这是最原始的thread。
如何在Entity中使用EntityManager?