我知道,我可以运行使用特定迁移execute
与up
/ down
和版本号,即
doctrine:migrations:execute YYYYMMDDHHMMSS --down
那么我的问题是 - 是否有一种更简单的方法来简单地运行下一个或上一个迁移而无需查找版本号?
理想情况下,我想要像
doctrine:migrations:execute --down n
在n
指定方向上从当前运行的迁移数在何处.
(同样的想法rake db:rollback STEP=n
)
我使用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-扩展-
不管怎样,同样的问题。
我有一个方法可以接收一个可以是任意数量类型的参数。
它可以是一个数组。
它可能是以某种方式可迭代的对象,例如集合。
它可能完全是其他东西,例如会抛出的字符串或整数
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)
我很惊讶没有在这里找到答案,这可能意味着它非常简单,而且我遗漏了一些明显的东西。
我得到了两个实体映射如下:
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。
任何想法发生了什么?