小编Ban*_*ple的帖子

使用symfony 3执行使用doctrine迁移的下一个/上一个迁移

我知道,我可以运行使用特定迁移executeup/ down和版本号,即

doctrine:migrations:execute YYYYMMDDHHMMSS --down

那么我的问题是 - 是否有一种更简单的方法来简单地运行下一个或上一个迁移而无需查找版本号?

理想情况下,我想要像

doctrine:migrations:execute --down n

n指定方向上从当前运行的迁移数在何处.

(同样的想法rake db:rollback STEP=n)

php symfony doctrine-orm doctrine-migrations symfony-3.3

11
推荐指数
1
解决办法
3290
查看次数

为什么PhpStorm使用yield允许函数返回null返回类型?

我使用PhpStorm在以下函数中自动添加了返回类型:

/**
 * @return \Generator|null
 */
function yieldTest(): ?\Generator
{
    yield from [1, 2, 3];
}
Run Code Online (Sandbox Code Playgroud)

我的问题:为什么在null选项旁边添加选项\Generator

我看不到此方法返回null的方法,所以我想知道我是在忽略工作中的某些东西yield还是这是PhpStorm的怪癖并且可以安全地放弃?

更新:

为了澄清-我问为什么PHPStorm生成的返回类型为?\Generator

我了解它随后被添加null到了php doc @return标签中,因为在上?

更新2:

这是生成额外位之前测试文件的完整代码:

class yieldTestClass
{
    public function yieldTest()
    {
        yield from [1, 2, 3];
    }
}
Run Code Online (Sandbox Code Playgroud)

这是从方法名称的上下文菜单中选择“声明返回类型”后的代码:

class yieldTestClass
{
    public function yieldTest(): ?\Generator
    {
        yield from [1, 2, 3];
    }
}
Run Code Online (Sandbox Code Playgroud)

我不确定这是IDE中的本机功能还是来自插件,但如果是插件,我想它应该是https://plugins.jetbrains.com/plugin/7622-php-inspections-ea-扩展-

不管怎样,同样的问题。

php phpstorm

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

如何检查变量是否“可循环”?

我有一个方法可以接收一个可以是任意数量类型的参数。

它可以是一个数组。

它可能是以某种方式可迭代的对象,例如集合。

它可能完全是其他东西,例如会抛出的字符串或整数

Warning: Invalid argument supplied for foreach()
Run Code Online (Sandbox Code Playgroud)

如何可靠地检查变量是否“可循环”以避免警告?

我试过is_array()如下,但这只适用于数组:

if(is_array($mystery_type)){
    foreach($mystery_type as $value){
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我很惊讶没有在这里找到答案,这可能意味着它非常简单,而且我遗漏了一些明显的东西。

php

3
推荐指数
1
解决办法
700
查看次数

Symfony 映射错误:“映射彼此不一致”&“关联是指不存在的反向边字段”

我得到了两个实体映射如下:

class ScriptFeedback
{
    /**
     * @ORM\ManyToOne(targetEntity="Script", inversedBy="feedback")
     */
    private $script;

    ...
}

class Script
{
    /**
     * @ORM\OneToMany(targetEntity="ScriptFeedback", mappedBy="script")
     */
    private $feebdack;

    ...
}
Run Code Online (Sandbox Code Playgroud)

这有效 - 我可以从中生成迁移,并且该站点完全按照我的意愿工作,正确链接我的脚本及其在数据库中的反馈。

但是 - 当我跑步时,doctrine:schema:validate我得到:

[映射] 失败 - 实体类 'AppBundle\Entity\Script' 映射无效: * 映射 AppBundle\Entity\Script#feebdack 和 AppBundle\Entity\ScriptFeedback#script 彼此不一致。

[映射] 失败 - 实体类 'AppBundle\Entity\ScriptFeedback' 映射无效: * 关联 AppBundle\Entity\ScriptFeedback#script 指的是不存在的反向侧字段 AppBundle\Entity\Script#feedback。

任何想法发生了什么?

php symfony doctrine-orm symfony-3.3

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