有实体用户和公司。公司有 user_id。
现在表结构发生变化,下一个用户可以代表许多公司,反之亦然(多对多,例如一对多 - 多对一)。这在中间引入了 CompanyRepresentative Entity,其中包含字段 user_id、company_id 和 role。公司 user_id 将随着该更改而被删除。
如何针对这种情况制作数据迁移脚本?当前存在的每个公司都必须有 CompanyRepresentative 条目,该条目连接当前已连接的同一用户和公司。
环境是带有 Doctrine 和 Mysql 的 symfony 4 应用程序。
我在两个实体之间有 ManyToOne 关系ArticleLine和Artcile:
<?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) 使用此命令后:
php bin/console make:fixtures:load
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
“make:fixtures”命名空间中没有定义任何命令。
我正在运行奏鸣曲管理员,并且我有一个现有的工作实体/管理员。我已经向 Dom、实体、管理员添加了另外 2 列,并运行了 app/console Dotility:schema:update 命令以成功将字段导入数据库。
在本地开发环境中,这非常有效。
在生产方面,新油田并没有节省成本。
在奏鸣曲管理中保存实体时,如果我在 preUpdate 或 postUpdate 中手动调用 $this->isMyNewField() ,我会得到 true 或 false 的正确结果,具体取决于我是否选中该框。
然而,学说似乎根本没有正确注册该字段,我已经记录了它在更新和持久化时运行的sql,并且它实际上甚至没有尝试对该字段执行任何操作。
如果我将 AppKernel 更改为在“dev”而不是“prod”(在生产环境上)上运行,那么一切都会按预期工作,并且原则会毫无问题地接受它。
我尝试过清除学说元数据、清除缓存、重新启动服务器、更改字段类型、删除学说并重新添加(通过实体 orm xml 文件)
还是没有运气。我还可以尝试其他想法吗?
谢谢
凯文
我有一个 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 显示某些库存在一些问题,但都无济于事。
我在我的表中添加了一个新闻关系,在 postUp() 方法中我想更新我的所有线程。
我如何访问迁移类中的 EntityManager 以获取我的所有线程、更新它们并保留/刷新我的修改?
我在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) 我有一个具有字段的实体Users:
/**
* @ORM\Column(type="boolean", options={"default"=false})
*/
private $activated;
Run Code Online (Sandbox Code Playgroud)
在我的数据库上,这是一个not_null值。我希望这个(映射的)字段能够接受空值。
我有一个显示年龄数据的问题,我必须使用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
我有这个代码:
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)
为什么我会收到此错误?我怎么解决这个问题?