gpt4 book ai didi

symfony - 如何从数据库中的现有数据生成 slug 字段 - Doctrine Symfony2

转载 作者:行者123 更新时间:2023-12-02 15:48:43 25 4
gpt4 key购买 nike

这是我的实体,我使用了 gedmo 注释,当创建(保留)新寄存器时,slug 可以正常工作,但我如何从现有数据库自动生成 slug 文本

 /**
* @Gedmo\Slug(fields={"name"})
* @ORM\Column(type="string", unique=true)
*/
protected $slug;

最佳答案

这是一个简单的 Symfony 命令,用于重新生成给定类的所有 slugs:

<?php

namespace App\Command;

use App\Entity\Foo;
use App\Entity\Bar;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

class RegenerateSlugs extends Command
{
private $doctrine;

protected static $defaultName = "app:regenerate-slugs";

public function __construct(ManagerRegistry $doctrine)
{
parent::__construct();

$this->doctrine = $doctrine;
}

protected function configure(): void
{
$this
->setDescription('Regenerate the slugs for all Foo and Bar entities.')
;
}

protected function execute(InputInterface $input, OutputInterface $output): void
{
$manager = $this->doctrine->getManager();

// Change the next line by your classes
foreach ([Foo::class, Bar::class] as $class) {
foreach ($manager->getRepository($class)->findAll() as $entity) {
$entity->setSlug(null);
//$entity->slug = null; // If you use public properties
}

$manager->flush();
$manager->clear();

$output->writeln("Slugs of \"$class\" updated.");
}
}
}

嗨,希望它可以帮助那些偶然发现这个问题的人!

关于symfony - 如何从数据库中的现有数据生成 slug 字段 - Doctrine Symfony2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35071731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com