我试图理解Symfony2cascade
中Doctrine中的选项.
我希望能够删除子实体(而不是触发外键约束错误.)
我有3个实体:
报告
/**
* @ORM\OneToMany(targetEntity="Response", mappedBy="report")
*/
protected $responses;
/**
* @ORM\OneToMany(targetEntity="Response", mappedBy="report")
*/
protected $sms;
Run Code Online (Sandbox Code Playgroud)
响应
/**
* @ORM\ManyToOne(targetEntity="Report", inversedBy="responses")
*/
protected $report;
Run Code Online (Sandbox Code Playgroud)
短信
/**
* @ORM\ManyToOne(targetEntity="Report")
*/
protected $report;
Run Code Online (Sandbox Code Playgroud)
现在我想删除一个Response
实体,但我得到了
SQLSTATE [23000]:完整性约束违规:1451无法删除或更新父行:
外键约束失败(mybundle
.sms
,CONSTRAINTFK_B0A93A77BB333E0D
FOREIGN KEY(reportId
)REFERENCESreport
(id
))
我在哪里使用该cascade
选项以及我应该使用哪个选项(detach
或remove
)?
我可以做很多试验和错误来解决这个问题,但我希望得到专家的解释,所以我不会忽视某些事情.
我正在尝试安装php的ssh2扩展,并且有点困难。该文件在那里,它只是没有加载到php中。
首先,我安装了ssh2:
aptitude install libssh2-1-dev libssh2-php
Run Code Online (Sandbox Code Playgroud)
(对于它的价值,我在Nginx上运行Ubuntu 12.04。)
我可以看到ssh2是使用modules命令加载的:
php -m |grep ssh2
ssh2
Run Code Online (Sandbox Code Playgroud)
但是,当我运行代码时,出现未定义的函数错误。
在我的phpinfo()脚本中,我可以看到我的php安装程序在此目录中扫描了其他ini文件:/etc/php5/fpm/conf.d。列出该目录的内容,我可以看到我的ssh2.ini在那里:
ls /etc/php5/fpm/conf.d
mysqli.ini mysql.ini pdo.ini pdo_mysql.ini ssh2.ini
Run Code Online (Sandbox Code Playgroud)
再次根据phpinfo,将加载其他四个ini文件。SSH2不是。
我还尝试将“ extension = ssh2.so”直接放置在我的php.ini文件-/etc/php5/fpm/php.ini中。是的-我已经重新启动了Nginx服务器。
我还有其他东西吗?
我无法弄清楚我的Symfony2路由YML文件中的单个路由有什么问题.其他每条路线工作得很好(我已经有几十条了),但这条路线拒绝被识别.
这是我的YML文件的相关剪辑:
ProjectMainBundle_util_initUpload:
pattern: /util/initUpload
defaults: { _controller: ProjectMainBundle:Utilities:initUpload }
requirements:
_method: POST
ProjectMainBundle_util_init:
pattern: /util/init
defaults: { _controller: ProjectMainBundle:Utilities:initUtilities }
requirements:
_method: POST
ProjectMainBundle_util_download:
pattern: /util/download
defaults: { _controller: ProjectMainBundle:Utilities:download }
requirements:
_method: GET
Run Code Online (Sandbox Code Playgroud)
第一个路由'/ util/initUpload'返回' 找不到"POST/util/initUpload"错误的路由.我已经尝试将块放在不同的位置(甚至将它移到'/ util/init'上面.)'/'索引路径位于我的routing.yml文件的末尾,所以这不应该是问题.上面的路由是唯一的格式为/ util/*的路由.
该路由用于处理表单和文件上传,但我认为这不重要.我已经删除了POST要求并直接在浏览器中对其进行了测试,这仍然给了我同样的错误.. camelCase应该不是问题.我有其他格式的路线,工作得很好......
我还缺少什么?关于如何调试这个的任何建议?我的下一步是废弃YML文件并使用php格式重写,但我真的不想这样做..