小编F21*_*F21的帖子

从具有外部约束的多个表中删除

我想从多个表中删除.这是我的表格的样子

    A_has_B ---- B ---- C_has_B
(many to many)        (many to many)
Run Code Online (Sandbox Code Playgroud)

我正在尝试删除A_has_B,B和C_has_B中的所有行,给定B中记录的ID.我使用带有innodb存储引擎的MySQL,其中为A_has_B定义了外键,而C_has_B引用了B中的ID.

我试图像这样执行删除:

DELETE A_has_B.*, C_has_B.*, B.*

FROM
A

join
B
on (B.B_id = A.B_id)

join
C
on (C.B_id = B.B_id)

where B.B_id IN(1,2, 4);
Run Code Online (Sandbox Code Playgroud)

问题是,当我执行查询时,mysql抱怨:

Error Code: 1451. Cannot delete or update a parent row: a foreign key constraint fails (`db`.`C`, CONSTRAINT `fk_C` FOREIGN KEY (`B_id`) REFERENCES `B` (`B_id`) ON DELETE NO ACTION ON UPDATE NO)
Run Code Online (Sandbox Code Playgroud)

我该怎么办呢?

mysql sql foreign-keys sql-delete

19
推荐指数
3
解决办法
2万
查看次数

在生成同义词时防止生成类似sw字的图像

我正在使用这个PHP脚本来生成identicons.它使用Don Park的原始identicon算法.

该脚本运行良好,我已将其调整到我自己的应用程序以生成identicons.问题是有时会产生交换信号.虽然万字符有和平的起源,但人们在看到这些符号时会冒犯.

我想做的是改变算法,以便永远不会生成星号.我已经做了一些挖掘,并在微软的网站上发现了这个帖子,其中一名员工声称他们已经添加了一个调整以防止生成swastikas,但仅此而已.

是否有人确定了调整将是什么以及如何防止生成swastikas?

language-agnostic algorithm identicon

18
推荐指数
2
解决办法
1784
查看次数

Div无缘无故地获得额外的高度

我有一些像这样的标记:

<div class="account-picture">
    <img src="http://i.imgur.com/Mcr3l.png">
</div>
Run Code Online (Sandbox Code Playgroud)

div要向左浮动的需求.图像为128px x 128px.

还有一些css:

.account-picture{
   float: left;
   background: #FFFFFF;
   padding: 10px;
   border: 1px solid red;
   font-size: 1px;
   overflow: hidden;
}

img{
   border: 1px solid #F8F8F8;
   overflow: hidden;
}
Run Code Online (Sandbox Code Playgroud)

但问题是似乎有一些额外的高度分配给div.萤火虫的布局图如下: 在此输入图像描述

为什么div的高度增加2个像素?为什么浏览器会有所不同?

  • Firefox 12:2px额外
  • IE9:0.26px额外
  • Chrome:0px额外.

这是一个小提琴:http://jsfiddle.net/mWe5Y/

为什么会发生这种情况,如何摆脱额外的"高度"?

html css height cross-browser

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

symfony2中的Ajax表单提交,没有javascript的用户优雅降级

我正在构建一个涉及表单的Web应用程序.正在使用的框架是symfony2.我想让一切为没有javascript的用户工作,然后逐步增强启用javascript的人的体验.我打算用JQuery作为我的javascript库.

如果用户没有javascript并且请求不是ajax请求,我希望有提交的表单并使用FlashMessage组件显示消息.

对于具有javascript支持的用户,如果提交成功,我想将消息返回给他们.然后,javascript应立即在div中显示该消息.

与此同时,我需要处理错误消息.对于没有javascript的用户,整个表单将被重新呈现,并显示错误消息.

对于使用javascript的用户,ajax响应应该是一个包含输入组件的id和错误消息的数组.然后Javascript应该在没有刷新的情况下将这些插入到表单中.

查看symfony2书籍,我可以看到以下提交内容,然后我修改它以检查请求是否是ajax请求:

public function newAction(Request $request)
{
    // just setup a fresh $task object (remove the dummy data)
    $task = new Task();

    $form = $this->createFormBuilder($task)
        ->add('task', 'text')
        ->add('dueDate', 'date')
        ->getForm();

    if ($request->getMethod() == 'POST') {
        $form->bindRequest($request);

        if ($form->isValid()) {
            // perform some action, such as saving the task to the database
            if ($this->request->isXmlHttpRequest(){
                   //return data ajax requires.
            } 
            return $this->redirect($this->generateUrl('task_success'));
        }
    }

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

我发现这种方法的问题是不是很优雅.我需要在每个表单上添加额外的检查.此外,如果请求通过Zend_AMF进入,则此方法不起作用.

有没有更好的方法来做到这一点?

php forms ajax symfony

14
推荐指数
2
解决办法
9666
查看次数

解析日期而不进行时区转换

我正在使用groovy(gremlin准确地遍历图形数据库).不幸的是,因为我使用的是gremlin,所以我无法导入新的类.

我有一些日期值,我希望转换为Unix时间戳.它们以以下格式存储为UTC:2012-11-13 14:00:00:000

我正在使用这个片段解析它(在groovy中):

def newdate = new Date().parse("yyyy-M-d H:m:s:S", '2012-11-13 14:00:00:000')
Run Code Online (Sandbox Code Playgroud)

问题是它进行了时区转换,结果是:

Tue Nov 13 14:00:00 EST 2012
Run Code Online (Sandbox Code Playgroud)

如果我然后将其转换为使用时间戳time(),转换为UTC,则生成时间戳.

如何new Date()在首次解析日期时进行任何时区转换(并假设日期为UTC)?

java groovy datetime gremlin

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

作曲家和多个分支

我有一个带有2个分支的git项目:

  • 师父:目前"稳定分支"但遭到改变.发布标记从那里.
  • Devel:下一个版本的开发分支.当我们认为这里的某些功能非常稳定时,它会合并为master.

在master中,我有一个composer.json使用特定版本的要求:

"require" : {
    "triagens/arangodb" : "1.2.1",
    "php" : ">=5.4.0"
},
Run Code Online (Sandbox Code Playgroud)

在我的devel分支中,我想使用依赖项的开发版本:

"require" : {
    "triagens/arangodb" : "dev-devel",
    "php" : ">=5.4.0"
},
Run Code Online (Sandbox Code Playgroud)

实际上,当切换和/ composer installcomposer update运行分支时,我希望让作曲家更新/更改相应版本的依赖关系.

由于composer install --dev不支持具有不同版本的依赖项require-dev,我无法在该require-dev部分中设置不同的版本.

我也不希望composer.json每个分支都没有单独的,因为合并会非常痛苦.

如果您有多个分支,并且每个分支使用某种版本的依赖项,那么最好的方法是什么?

php composer-php

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

是否允许HTTP 405状态响应具有正文?

我正在构建一个RESTful API.当客户端在不支持它的资源上使用不受支持的方法(如POST)时,我将返回一个405带有Allow列出允许方法的标头:

Status Code: 405 Method Not Allowed
Allow: GET, HEAD, OPTIONS
Connection: keep-alive
Date: Mon, 08 Apr 2013 00:19:26 GMT
Transfer-Encoding: chunked
Run Code Online (Sandbox Code Playgroud)

是否允许有405响应的正文(提供错误消息)?

w3c的网站来看,不清楚是否允许一个机构405做出回应.

httpresponse http-status-codes

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

强制调用父方法

无论如何(或模式)是否强制调用父方法?

我有一个像这样的抽象类:

abstract class APrimitive{
   public function validate(){
      //Do some stuff that applies all classes that extend APrimitive
   }
}
Run Code Online (Sandbox Code Playgroud)

然后我有一些扩展到APrimitive"base"的类:

class CSophisticated extends APrimitive{

   public function validate(){
       //First call the parent version:
       parent::validate();

       //Then do something more sophisticated here.
   }
}
Run Code Online (Sandbox Code Playgroud)

问题是,如果我们在几个月后回到代码中,并使用方法创建一些类似CSophisticated的类validate(),那么我们可能会忘记parent::validate()在该方法中调用它.

请注意,某些CS复杂类可能没有该validate()方法,因此将调用父版本.

我知道可以在某个地方发表评论,提醒程序员打电话parent::validate(),但是有更好的方法吗?如果parent::validate()validate()方法中没有进行调用,则可能是一种自动抛出异常的方法.

php oop design-patterns

9
推荐指数
2
解决办法
1150
查看次数

嵌套div比父div大

我使用CSS来设置使用JavaScript创建的滚动条.

.scrollbar-track{
    background: black;
    height: 10px;
}
 
.scrollbar-thumb{
    cursor: default;
    border: 1px red solid;
    width: 50px;
    padding: 0;
}

.scrollbar-thumb-first{
    display: inline-block;
    background: green;
    width: 5px;
    height: 10px;
}
 
.scrollbar-thumb-middle{
    display: inline-block;
    background: red;
    height: 10px;
    width: 20px;
}
 
.scrollbar-thumb-last{
    display: inline-block;
    background: blue;
    width: 5px;
    height: 10px;
}
Run Code Online (Sandbox Code Playgroud)
<div class="scrollbar">
    <div class="scrollbar-track" style="width: 970px;">
        <div class="scrollbar-thumb">
            <span class="scrollbar-thumb-first"></span>
            <span class="scrollbar-thumb-middle"></span>
            <span class="scrollbar-thumb-last"></span>
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

这是小提琴:http://jsfiddle.net/w27wM/8/

为什么内部div比父div更大?即使边距和填充设置为0,问题仍然存在.

html css

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

什么时候自动加载器被调用?

我有一个使用spl_autoload_register()以下注册的自动加载器:

class MyAutoLoader{
   public function __construct(){
       spl_autoload_register(array($this, 'loader'));
   }

   public function loader($className){
       var_dump($className);
   }
}

$al = new MyAutoLoader(); //Register the autoloader
Run Code Online (Sandbox Code Playgroud)

var_dump(),自动加载器似乎被调用很多东西,数据要插入到数据库中,参数化的SQL查询以及不是:

string 'name' (length=4)

string 'a:2:{s:5:"label";s:4:"Name";s:8:"required";b:1;}' (length=48)

string 'en_US' (length=5)

string 'object' (length=6)

string 'name = ?' (length=8)
Run Code Online (Sandbox Code Playgroud)

这些东西永远不会是类,所以永远不应该使用newclass_exists()等等.

在什么情况下/函数调用是自动加载器调用?我想停止自动加载不是被调用类的"classNames",因为每个$className都被使用检查file_exist(),并且检查这些数据字符串是非常低效的.


问题解决了.我首先按照Brad的建议进行了回溯,并将跟踪转储到文件中(只需添加一个打开文件并附加到其上的小片段).

显然,痕迹非常大,但我选择了我能找到的最简单的一条.顺便说一下,这个跟踪碰巧是一个调用我编写的数据库(ORM)包装器来包装真棒RedBean ORM库的.我转储的结果$className也验证了,因为这些字符串是数据进出数据库.

话虽如此,我有一个__call()拦截我的数据库包装器的方法,做一些处理,将它传递给RedBean,处理结果,然后将其发送回调用者.

问题:在处理过程中,我正在调用is_subclass_of()instanceof,这显然会要求自动加载器尝试加载类(因为我们没有任何名为name =?loaded的类,也不存在).

解决方案是实际确保我们有一个object之前的呼叫is_subclass_of()instanceof: …

php autoloader

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