Produto.php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Produto
*
* @ORM\Table(name="produto")
* @ORM\Entity(repositoryClass="AppBundle\Repository\ProdutoRepository")
*/
class Produto
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="descricao", type="string", length=50)
*/
private $descricao;
/**
* @ORM\ManyToOne(targetEntity="Categoria", inversedBy="produtos")
* @ORM\JoinColumn(name="categoria_id", referencedColumnName="id")
*/
private $categoria;
/**
* @var decimal
*
* @ORM\Column(name="valor", type="decimal", scale=2)
*/
private $valor;
/**
* @var int
*
* @ORM\Column(name="multiplo", type="integer")
*/
private $multiplo;
/** …Run Code Online (Sandbox Code Playgroud) Symfony版本:3.1.3
我有一个像下面的控制器,
public function studentAddClassAction( $id, Request $request )
{
$em = $this->getDoctrine()->getManager();
$student= new Student();
// new class object and create the form
$classes= $em->getRepository('PIE10Bundle:Classes')->findAll();
$form = $this->createForm(ClassType::class, $classes);
$form->handleRequest($request);
if( $form->isSubmitted() && $form->isValid() )
{
$parent = $form['parent']->getData(); // the parentID
$cName = $form['class']->getData();
$classID= $cName->getId(); // the classID
//insert new row to the student table
$student->setParentId( $parent );
$student->setClassId( $classID );
$student->setUserId( $id );
$em->persist($student);
$em->flush();
$this->addFlash('notice',
'Student Updated');
return $this->redirectToRoute('user_students');
}
// some other code
} …Run Code Online (Sandbox Code Playgroud) 我们有多个MSSQL服务器具有相同的数据库副本,下面的查询返回除一个以外的所有服务器的有效顺序,我仔细检查了表的设计,除了几个服务器缺少索引外,所有看起来都相同.
查询由doctrine生成
WITH dctrn_cte AS (
SELECT TOP 10 a0_.Priority
FROM PROJECTS a0_
WHERE a0_.ProjectID = 1234
AND (a0_.Check1 > 0
OR
a0_.Check2 > 0)
AND a0_.Active = 1
ORDER BY a0_.Priority DESC)
SELECT *
FROM (
SELECT *, ROW_NUMBER()
OVER (ORDER BY (SELECT 0)) AS doctrine_rownum FROM dctrn_cte
) AS doctrine_tbl
WHERE doctrine_rownum BETWEEN 1 AND 10 ORDER BY doctrine_rownum ASC
Run Code Online (Sandbox Code Playgroud)
每次在该特定服务器上执行查询时,它都会给出一个随机顺序 - 它完全忽略了ORDER BY部分.
我想把我的symfony3代码放到托管中,毕竟我得到了
哎呀!发生错误
服务器返回"500内部服务器错误".
有些东西坏了.发生此错误时,请告诉我们您在做什么.我们会尽快修复它.给您造成的任何不便,请原谅.
我的parameters.yml
#在编辑器安装期间自动生成此文件
参数:
database_host: db.if.ktu.lt
database_port: null
database_name: lukmil
database_user: lukmil
database_password: "MyPassword"
mailer_transport: smtp
mailer_host: 127.0.0.1
mailer_user: ~
mailer_password: ~
secret: ThisTokenIsNotSoSecretChangeIt
Run Code Online (Sandbox Code Playgroud)
这就是我从prod日志中得到的
[2016-10-11 18:18:40] request.INFO:匹配路由"{route}".{"route":"authentication_register","route_parameters":{"_ controller":"AppBundle\Controller\DefaultController :: indexAction","_ route":"authentication_register"},"request_uri":" http://lukmil.stud .if.ktu.lt/register ","方法":"GET"} [] [2016-10-11 18:18:40] security.INFO:使用匿名令牌填充TokenStorage.[] [] [2016-10-11 18:18:40] request.CRITICAL:未捕获PHP异常Doctrine\DBAL\Exception\ConnectionException:"驱动程序中发生异常:SQLSTATE [28000] [1045]用户访问被拒绝' root'@'stud.if.ktu.lt'(使用密码:否)"at /home/lukmil/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php第103行{"exception":" [object](Doctrine\DBAL\Exception\ConnectionException(code:0):驱动程序中发生异常:SQLSTATE [28000] [1045]用户'root'@'stud.if.ktu.lt'拒绝访问(使用密码:NO)at /home/lukmil/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php:103,Doctrine\DBAL\Driver\PDOException(代码:1045):SQLSTATE [28000] [1045] Access用户'root'@'stud.if.ktu.lt'(使用密码:否)拒绝/home/lukmil/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:47,PDOException(代码:1045):SQLSTATE [28000] [1045]访问被拒绝用户'root'@'stud.if.ktu.lt'(使用密码:否)/ home/lukmil/vendor/doctrine/dba l/lib/Doctrine/DBAL/Driver/PDOConnection.php:43)"} []
我能做什么?在localhost它工作..只是在托管不
更新 在我的Symfony项目中,我可以上传单个图像.现在我正在尝试上传多个图像.
class ImageFile extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('images', FileType::class, array(
'attr' => array(
'accept' => 'image/*',
'multiple' => 'multiple'
)
))
->add('save',SubmitType::class,array('label'=>'Insert Image','attr'=>array('class'=>'btn btn-primary','style'=>'margin-bottom:15px')))
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => images::class
));
}
}
Run Code Online (Sandbox Code Playgroud)
在我的Images实体中,我保留了一个像这样的SatellieImage对象数组.
class images
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/** …Run Code Online (Sandbox Code Playgroud) 我想知道是否可以修改$this->getDoctrine()->getRepository('AppBundle:Foo')->findAll(),以便我只获取相关实体的ID.因为Foo与"一个用户"和"多个组"相关,所以我总是在结果中得到"整个用户对象"和"所有组对象",这使得结果非常不清楚.那么,是否可以只打印相关对象的ID?
我希望有一个人可以帮助我.谢谢!
我有2张桌子歌曲和专辑.我创建了第三个实体SongAlbum,其中包含了类似于此处所述的额外字段.
问题:如何通过歌曲和专辑确保第三个实体是唯一的.示例:不能有另一个SongAlbum对象具有完全相同的一对歌曲和专辑ID.
我有问题,因为我没有创建数据库
我的parameters.yml
parameters:
database_host: 127.0.0.1
database_port: null
database_name: symfony
database_user: root
database_password: null
mailer_transport: smtp
mailer_host: 127.0.0.1
mailer_user: null
mailer_password: null
secret: ThisTokenIsNotSoSecretChangeIt
Run Code Online (Sandbox Code Playgroud)
请帮帮我 :)
我有一个关于symfony学说的片段,它按降序选择数据.尝试将where子句应用于某些等于true的字段是一个问题.以下是我的片段
$results = $this->getDoctrine()->getRepository('RealBundle:Foo')->findBy([], ['id' => 'DESC','active' => true]);
Run Code Online (Sandbox Code Playgroud)
我有一个名为active的字段.检索active为true的所有结果是一个挑战
上述尝试给出了错误
为RealBundle\Entity\Foo #active指定的方向顺序无效
我正在使用Symfony 4,我有很多具有共同行为的存储库,所以我想避免重复代码。我试图通过这种方式定义父存储库类:
<?php
namespace App\Repository;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Symfony\Bridge\Doctrine\RegistryInterface;
class AppRepository extends ServiceEntityRepository {
public function __construct(RegistryInterface $registry, $entityClass) {
parent::__construct($registry, $entityClass);
}
// Common behaviour
}
Run Code Online (Sandbox Code Playgroud)
因此,我可以定义其子类,例如:
<?php
namespace App\Repository;
use App\Entity\Test;
use App\Repository\AppRepository;
use Symfony\Bridge\Doctrine\RegistryInterface;
class TestRepository extends AppRepository {
public function __construct(RegistryInterface $registry) {
parent::__construct($registry, Test::class);
}
}
Run Code Online (Sandbox Code Playgroud)
但我收到此错误:
无法自动装配服务“ App \ Repository \ AppRepository”:方法“ __construct()”的参数“ $ entityClass”必须具有类型提示,或必须被明确赋予值。
我尝试设置类似的类型提示string,object但是没有用。
有没有定义通用存储库的方法?
提前致谢
doctrine-orm ×10
php ×7
symfony ×7
doctrine ×3
many-to-many ×1
mysql ×1
orm ×1
sql-server ×1
symfony-3.1 ×1
symfony4 ×1
twig ×1