标签: doctrine

表结构变更时的Doctrine和Mysql数据迁移

有实体用户和公司。公司有 user_id。

现在表结构发生变化,下一个用户可以代表许多公司,反之亦然(多对多,例如一对多 - 多对一)。这在中间引入了 CompanyRepresentative Entity,其中包含字段 user_id、company_id 和 role。公司 user_id 将随着该更改而被删除。

如何针对这种情况制作数据迁移脚本?当前存在的每个公司都必须有 CompanyRepresentative 条目,该条目连接当前已连接的同一用户和公司。

环境是带有 Doctrine 和 Mysql 的 symfony 4 应用程序。

mysql doctrine symfony mysql-5.7

0
推荐指数
1
解决办法
3183
查看次数

学说:回归一维

我在两个实体之间有 ManyToOne 关系ArticleLineArtcile

<?php
//ArticleLine.php
ManyToOne(targetEntity="Gain\Bundle\ArticleBundle\Entity\Article")
Run Code Online (Sandbox Code Playgroud)

我正在尝试根据某些条件获取 Id 列表。
这是我的学说查询 dql:

SELECT tl.id FROM AppBundle\Entity\ArticleLine tl INNER JOIN tl.turnover t INNER JOIN tl.article a WHERE t.supplier = :supplier AND t.year = :year AND tl.significant = false ORDER BY tl.id asc
Run Code Online (Sandbox Code Playgroud)


打电话后$qb->getQuery()->getResult()我得到了数组的结果......

array:138 [
  0 => array:1 [
    "id" => 64624
  ]
  1 => array:1 [
    "id" => 64630
  ]
  2 => array:1 [
    "id" => 64631
  ]
  3 => array:1 [
    "id" => 64632 …
Run Code Online (Sandbox Code Playgroud)

doctrine symfony doctrine-orm

0
推荐指数
1
解决办法
912
查看次数

“make:fixtures”命名空间中没有定义命令

使用此命令后:

php bin/console make:fixtures:load
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

“make:fixtures”命名空间中没有定义任何命令。

php doctrine fixtures symfony

0
推荐指数
1
解决办法
1485
查看次数

Doctrine 在 prod env 中没有看到实体内某些字段的更改,但在 dev env 上却看到了更改

我正在运行奏鸣曲管理员,并且我有一个现有的工作实体/管理员。我已经向 Dom、实体、管理员添加了另外 2 列,并运行了 app/console Dotility:schema:update 命令以成功将字段导入数据库。

在本地开发环境中,这非常有效。

在生产方面,新油田并没有节省成本。

在奏鸣曲管理中保存实体时,如果我在 preUpdate 或 postUpdate 中手动调用 $this->isMyNewField() ,我会得到 true 或 false 的正确结果,具体取决于我是否选中该框。

然而,学说似乎根本没有正确注册该字段,我已经记录了它在更新和持久化时运行的sql,并且它实际上甚至没有尝试对该字段执行任何操作。

如果我将 AppKernel 更改为在“dev”而不是“prod”(在生产环境上)上运行,那么一切都会按预期工作,并且原则会毫无问题地接受它。

我尝试过清除学说元数据、清除缓存、重新启动服务器、更改字段类型、删除学说并重新添加(通过实体 orm xml 文件)

还是没有运气。我还可以尝试其他想法吗?

谢谢

凯文

doctrine symfony sonata

0
推荐指数
1
解决办法
607
查看次数

Symfony/Doctrine:获取可用命令列表

我有一个 Symfony 项目,我试图在我的控制器中获取可用命令的列表,所以我尝试执行list-command(连同--format=xml)来实现这一点。

我使用此处列出的代码从控制器运行命令,但最终出现错误“不推荐使用连接提供程序作为第一个构造函数参数已弃用”

这是代码:

    $application = new Application($kernel);
    $application->setAutoExit(false);
    $input  = new ArrayInput(['command' => 'list', '--format' => 'xml']);
    $output = new BufferedOutput();
    $application->run($input, $output);
    $content = $output->fetch();
Run Code Online (Sandbox Code Playgroud)

提到的错误发生在vendor\doctrine\dbal\lib\Doctrine\DBAL\Tools\Console\Command\RunSqlCommand.php. 这是完整的跟踪:

    $application = new Application($kernel);
    $application->setAutoExit(false);
    $input  = new ArrayInput(['command' => 'list', '--format' => 'xml']);
    $output = new BufferedOutput();
    $application->run($input, $output);
    $content = $output->fetch();
Run Code Online (Sandbox Code Playgroud)

奇怪的是,无论是否将格式设置为 XML,运行“bin/console list”(或只是“bin/console”)都不会显示错误,使用上述代码从我的控制器运行任何其他命令也可以正常工作。

我正在使用 Symfony 5.1.7 和 Doctrine-bundle 2.1,我已经尝试将学说/持久性降级到 1.x,因为 2.x 显示某些库存在一些问题,但都无济于事。

php doctrine symfony

0
推荐指数
1
解决办法
1499
查看次数

在 Symfony 5 迁移类中访问实体管理器?

我在我的表中添加了一个新闻关系,在 postUp() 方法中我想更新我的所有线程。

我如何访问迁移类中的 EntityManager 以获取我的所有线程、更新它们并保留/刷新我的修改?

migration doctrine entitymanager symfony

0
推荐指数
1
解决办法
273
查看次数

Doctrine/symfony2类的对象无法转换为字符串

我在Symfony 2中的项目有问题我得到了这个错误

Catchable Fatal Error: Object of class Nicearma\MemesBundle\Entity\Usuario could not be converted to string in C:\wamp\www\24memes\vendor\doctrine-dbal\lib\Doctrine\DBAL\Statement.php line 131
Run Code Online (Sandbox Code Playgroud)

问题是,我试图做一个表格,从UsuarioInfo类,这个类有一个对象Usuario,表单工作正常,但去发送信息我得到消息而我没有找到解决方案,任何人都知道如何解决这个?我有这个文件

registro.html.twig

<div class="usuario">
{{ form_row(form.usuario) }}
</div>
{{ form_rest(form) }}
Run Code Online (Sandbox Code Playgroud)

Usuario.php

namespace Nicearma\MemesBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * Nicearma\MemesBundle\Entity\Usuario
 *
 * @ORM\Table(name="usuario")
 * @ORM\Entity(repositoryClass="Nicearma\MemesBundle\Repository\Usuario")
 */
class Usuario implements UserInterface
{
    /**
     * @var integer $id
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var string $nombre
     * @Assert\Type(type="String") …
Run Code Online (Sandbox Code Playgroud)

php doctrine symfony doctrine-orm

-1
推荐指数
1
解决办法
1万
查看次数

Symfony 3.0:使用可以为空的字段设置实体

我有一个具有字段的实体Users:

  /**
   * @ORM\Column(type="boolean", options={"default"=false})
   */
  private $activated;
Run Code Online (Sandbox Code Playgroud)

在我的数据库上,这是一个not_null值。我希望这个(映射的)字段能够接受空值。

orm doctrine symfony

-1
推荐指数
1
解决办法
1713
查看次数

如何计算出生日期的年龄并用Symfony显示

我有一个显示年龄数据的问题,我必须使用birth_date属性计算

调节器

public function listageAction()
{
    $em = $this->getDoctrine()->getManager();

    $query = $em->createQuery(
         'select DATE_DIFF( CURRENT_DATE(),p.dateNaissance)
          from PersonnelBundle:Personnel p'
    );

    $personnels = $query->getResult();

    return $this->render('PersonnelBundle:Default:listage.html.twig');
}
Run Code Online (Sandbox Code Playgroud)

视图

{% for personnel in personnels %}
    <li> {{ personnel.nomP }} {{ personnel.prenomP }}  </li>
    <li> {{ personnel.age}} </li>
{% endfor %} 
Run Code Online (Sandbox Code Playgroud)

我有这个错误:

PersonnelBundle中不存在变量"人员":默认:第6行的listage.html.twig

doctrine symfony twig

-1
推荐指数
1
解决办法
784
查看次数

Symfony 3,doctrine致命错误,标量类型声明'integer'必须是不合格的

我有这个代码:

class Entity
{
    /**
    * @ORM\Column(type="Integer")
    * @ORM\Id
    * @ORM\GeneratedValue(strategy="AUTO")
    */
    private $id;
    ...
}
Run Code Online (Sandbox Code Playgroud)

当我尝试运行doctrine:schema:update时,我明白了

Fatal error, Scalar type declaration 'integer' must be unqualified
Run Code Online (Sandbox Code Playgroud)

为什么我会收到此错误?我怎么解决这个问题?

doctrine symfony php-7

-1
推荐指数
1
解决办法
1058
查看次数