小编gin*_*nja的帖子

mysql选择动态行值作为列名,另一列作为值

我有一个用户信息的遗留表(仍在使用中),我无法改变结构 -

id    name       value
------------------------------
0     timezone   Europe/London
0     language   en
0     country    45
0     something  x
1     timezone   Europe/Paris
1     language   fr
1     country    46
Run Code Online (Sandbox Code Playgroud)

时区/语言/国家等只是名称的例子,它们可以是变量/除了该列的行之外没有唯一的有限列表

我需要一个可以返回的MySQL兼容的SQL查询 -

id    timezone       language    country  something
---------------------------------------------------
0     Europe/London  en          45       x
1     Europe/Paris   fr          46
Run Code Online (Sandbox Code Playgroud)

我已经查看了关于将数据库中的数据库功能隐藏到MySQL中的stackoverflow的各种答案,类似但是它们似乎都不匹配使用来自同一个表的列中的唯一行值的变量列名别名的情况.虽然我睡得很少,所以他们都开始变得有点模糊,提前道歉.

我能找到的最近的将是使用准备好的语句/sf/answers/69026191/,它将首先从名称列中获取所有可能/唯一值并构建一个使用CASE WHEN和/或多个子SELECTJOIN上的查询相同的表查询.

我能想到的替代方法是获取该用户id的所有行并在for循环中在应用程序本身中处理它们,或者尝试将名称限制为有限量并使用sub- SELECTs/JOINs.但是,如果添加新名称,第二个选项并不理想,我必须重新访问此查询.

请告诉我,我错过了一些明显的东西

mysql sql pivot-table

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

Doctrine多个OneToMany/ManyToOne双向完整性约束违规

在Sytrfony2的最新Doctrine试图找出两个对象之间的多个双向关系.

Person owner对象有一个邮政地址,然后是一个集合中的多个辅助地址,我删除了()Person,我希望它的所有地址也被删除(但删除地址不应该删除一个人),但我是得到这个错误 -

An exception occurred while executing 'DELETE FROM address WHERE id = ?' with
params {"1":"fb5e47de-2651-4069-b85e-8dbcbe8a6c4a"}:

[PDOException] SQLSTATE[23000]: Integrity constraint violation: 1451
Cannot delete or update a parent row: a foreign key constraint fails
(`db`.`address`, CONSTRAINT `FK_633704 C29C1004E`
FOREIGN KEY (`person_id`) REFERENCES `person` (`id`))
Run Code Online (Sandbox Code Playgroud)

class Person
{

    /**
     * @var Address postalAddress
     *
     * @ORM\OneToOne(targetEntity="Address", cascade={"all"}, orphanRemoval=true)
     * @ORM\JoinColumn(onDelete="cascade")
     */
    private $postalAddress;

    /**
     * @var \Doctrine\Common\Collections\Collection otherAddresses
     *
     * @ORM\OneToMany(targetEntity="Address", mappedBy="person", cascade={"all"}, orphanRemoval=true)
     */
    private $otherAddresses; …
Run Code Online (Sandbox Code Playgroud)

php orm doctrine doctrine-orm symfony-2.1

7
推荐指数
1
解决办法
1400
查看次数

获得原始的dom元素innerHTML而无需javascript处理

背景 - 在由TinyMCE提供支持的文章编辑器中,用于大型媒体网站背后的企业内部CMS

HTML

<p>non-breaking-space: &nbsp; pound: &pound; copyright: &copy;</p>
Run Code Online (Sandbox Code Playgroud)

JS

console.log($('p').html());
console.log(document.getElementsByTagName('p').item(0).innerHTML);
Run Code Online (Sandbox Code Playgroud)

都归来了

non-breaking-space: &nbsp; pound: £ copyright: ©
Run Code Online (Sandbox Code Playgroud)

当我期待的时候

non-breaking-space: &nbsp; pound: &pound; copyright: &copy;
Run Code Online (Sandbox Code Playgroud)

一些元素使其实体反转(如磅和版权),并且一些元素被保留(非破坏空间).我需要一种方法来获取原始内部HTML,所有内容都保留,而不是由浏览器处理的内容; 那可能吗?

这是一个TinyMCE插件,它使用jQuery处理输入并将其放回原处.内容是通过数据库加载的,插件处理的图像标签根本不想修改文本内容.将某些实体自动更改回原始字符不会有太大问题,但是 -

  • 我们无法修改编辑的输入,即使它是次要的
  • 由于我们网站上的某些浏览器兼容性问题,我们强制要求这些实体在保存之前必须是实体

我会使用这个答案 - /sf/answers/308318111/ - 但是不能因为我的HTML代码在用户需要编辑的textarea中并且我需要运行jQuery DOM操作(通过插件).

我能想到的一种方法是不使用jQuery/DOM来处理我需要更改的图像标签,而是像许多TinyMCE插件一样使用正则表达式; 但是因为我在正则表达式中被击落以从所有元标记中提取所有属性来尝试HTML上的任何正则表达式,所以希望有更好的方法!

html javascript tinymce html-entities

6
推荐指数
1
解决办法
1175
查看次数

Symfony 配置验证原型节点中键值对中的键

在 Symfony 2.8 中,给定这个 YAML 配置块

my_bundle:
  profiles:
    'abc': 123
    'def: 456
    '...': ...
Run Code Online (Sandbox Code Playgroud)

如何验证配置文件下键值中的键是否为非空字符串?

在这种情况下,'abc' 和 'def' 只是示例,它们是任意的,不能预先定义。

这是我的配置文件 -

->arrayNode('profiles')
    ->isRequired()
    ->requiresAtLeastOneElement()
    ->useAttributeAsKey('name')
    ->prototype('integer')
        ->min(0)
    ->end()
->end()
Run Code Online (Sandbox Code Playgroud)

问题是

my_bundle:
  profiles:
    123
    456
Run Code Online (Sandbox Code Playgroud)

当我不希望它是有效的。

我找不到一种简单的内置方法来验证原型数组的键。

可能的解决方案

一:似乎我可以把它变成一个数组数组

my_bundle:
  profiles:
    -
      name: abc
      value: 123
    -
      name: def
      value: 456
Run Code Online (Sandbox Code Playgroud)

->arrayNode('profiles')
    ->isRequired()
    ->useAttributeAsKey('name')
    ->requiresAtLeastOneElement()
    ->prototype('array')
        ->children()
            ->scalarNode('name')
                ->isRequired()
                ->cannotBeEmpty()
                ->validate()
                    ->ifTrue(
                        function($s) {
                            return !is_string($s);
                        }
                    )
                    ->thenInvalid('Profile key must be a non-empty string')
                ->end()
            ->end() …
Run Code Online (Sandbox Code Playgroud)

php dependency-injection symfony symfony-2.8

5
推荐指数
0
解决办法
710
查看次数