小编Ren*_*gen的帖子

Doctrine 2.自动生成代理

我有一个奇怪的问题.我想在Doctrine 2中关闭代理的自动生成.我发现这行代码应该做(并且做)诀窍:

$config->setProxyDir(APPPATHSYSTEM."/proxies");
$config->setProxyNamespace('Proxies');

// Auto generate proxies for development
$config->setAutoGenerateProxyClasses(DEVELOPMENT);
Run Code Online (Sandbox Code Playgroud)

在我的测试环境中,代理位于应用程序/代理.即:

application/proxies/BaseUserProxy.php
Run Code Online (Sandbox Code Playgroud)

当我在实时环境中时,我的代码突然在application/proxies/Proxies上搜索代理,而不是实际位置.

我确实理解它与命名空间有关,但我不明白为什么它在使用setAutoGenerateProxy方法时表现不同.

有任何想法吗?

编辑

我确实使用以下方法生成新代理:

orm:generate-proxies
Run Code Online (Sandbox Code Playgroud)

选项.

这给了我这个输出:

php doctrine.php orm:generate-proxies
Processing entity "Base\Element"
Processing entity "Base\Page"
...
Processing entity "Base\Site"

Proxy classes generated to "/var/www/application/proxies"
Run Code Online (Sandbox Code Playgroud)

查看最后一行,代理在/ var/www/application/proxies中生成.目录列表如下所示:

BaseElementProxy.php
BasePageProxy.php
...
BaseSiteProxy.php
Run Code Online (Sandbox Code Playgroud)

所以没有额外的Proxies目录.但是,当我刷新我认为有的网页时,它会给我以下错误:

Warning: require(/var/www/application//proxies/Proxies/BaseUserProxy.php) 
[function.require]: failed to open stream: 
No such file or directory in /var/www/library/Doctrine/Common/ClassLoader.php on line 148
Run Code Online (Sandbox Code Playgroud)

为什么要添加额外的Proxies目录?如果我确实在每个请求上生成代理,则它不会在额外的Proxies目录中查找.任何人?

@Bryan M.:这不是解决方案,而是解决方法.此外,它不起作用.在生成代理时,如果应用您的建议,它们将在APPPATHSYSTEM中生成,我的webapp将尝试从APPPATHSYSTEM加载它们."Proxies".问题是,如果我使用,系统会在不同位置查找代理:

$config->setAutoGenerateProxyClasses(DEVELOPMENT);
Run Code Online (Sandbox Code Playgroud)

如果开发是真的,它将查看APPPATHSYSTEM.如果DEVELOPMENT设置为false,它将查看APPPATHSYSTEM."Proxies".只是切换开发常量会破坏我的应用程序,理论上应该是不可能的.

php orm doctrine-orm

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

MySQL的Doctrine 2配置

我忙于Doctrine2,但我无法让它工作.

使用sqlite开箱即用的一切都很好.但是当我尝试将沙箱演示中的数据库更改为MySQL时,我感到困惑.这就是我做的.我创建了一个数据库,将connectionOptions数组更改为:

$connectionOptions = array(
    'driver' => 'pdo_mysql',
    'path' => __DIR__.'/mysql.php'
);
Run Code Online (Sandbox Code Playgroud)

'path'条目存在,看起来像这样:

$connectionParams = array(
    'dbname' => 'db_test',
    'user' => 'test',
    'password' => 'p4ssw0rd',
    'host' => 'localhost',
    'driver' => 'pdo_mysql',
);
Run Code Online (Sandbox Code Playgroud)

当我运行命令来创建数据库时:

 php doctrine orm:schema-tool:create
Run Code Online (Sandbox Code Playgroud)

这给了我错误:

 no database selected
Run Code Online (Sandbox Code Playgroud)

似乎是一个明确的信息.但是我如何更改数据库名称,因为mysql.php中指定的那个(见上文)确实是excist,应该是它使用的那个!我搜索了几个小时,但我无法在任何地方找到它.

php mysql doctrine

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

Doctrine2死锁 - 如何处理

在我正在研究的symfony2项目中,有时在调用flush我的实体管理器时会发生死锁.这导致例外.大多数情况下,此错误只发生一次,第二次尝试插入相同的数据正常工作.

有没有一种好方法可以再次执行(刷新)同一个事务.很简单

$em->flush();
Run Code Online (Sandbox Code Playgroud)

不会这样做,因为如果发生错误,实体经理会被关闭.

我发现https://github.com/doctrine/doctrine2/pull/806位没有提供解决方案.

mysql deadlock doctrine-orm

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

切换语句没有中断

为什么switch语句中不包含break的case选项会在没有check的情况下自动转发到下一个case?

try {
    switch($param) {
        case "created":
            if(!($value instanceof \DateTime))
                throw new \Exception("\DateTime expected, ".gettype($value)." given for self::$param");
        case "Creator":
            if(!($value instanceof \Base\User)) {
                throw new \Exception(get_class($value)." given. \Base\User expected for self::\$Creator");                  
            }
        default:
            $this->$param = $value;
            break;
    }
} catch(Exception $e) {
    echo $e->getMessage();
}
Run Code Online (Sandbox Code Playgroud)

如果param是"创建的",它将在创建的案例中进行检查,这很好.当检查成功时,我希望代码继续使用默认选项,这就是没有中断的原因; 但相反,它继续"创造者"而$ param!="创造者"!

我知道如何解决这个问题(只是在我的情况下"创建"添加默认代码),但我不喜欢经常重复该代码.我的实际问题是:为什么在案例不是"创作者"的情况下继续使用"创作者"案例.

php switch-statement

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

无法使用Eclipse EGit将文件添加到我的存储库

我使用Eclipse(Helios)与PDT和EGit.我有一个没有版本控制的项目,所以我通过执行以下操作为它创建了一个git存储库:

Team -> Share Project
Run Code Online (Sandbox Code Playgroud)

当我尝试将项目的文件添加到存储库时:

Team -> Add
Run Code Online (Sandbox Code Playgroud)

我得到一个例外:

Failed to add resource to index
    Failed to add resource to index
    Exception caught during execution of add command
Run Code Online (Sandbox Code Playgroud)

当我在命令行上手动添加文件时,一切正常.

有任何想法吗?

编辑:

eclipse给出的错误是:

Caused by: org.eclipse.jgit.errors.ObjectWritingException: Unable to create new object: Z:\eage_layout\.git\objects\60\f30dd232bd6ddaeb198fb11400c2613a072189
 at org.eclipse.jgit.storage.file.ObjectDirectoryInserter.insert(ObjectDirectoryInserter.java:100) at org.eclipse.jgit.api.AddCommand.call(AddCommand.java:177)
Run Code Online (Sandbox Code Playgroud)

我正在运行的代码位于CentOs上运行的虚拟机上.我正在使用Windows机器并使用samba共享来访问虚拟机上的代码.我已将.git目录上的文件系统权限设置为777,但它仍然无效.

eclipse egit

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

将空值添加到数组

我有这个方法:

public function search($searchKey=null, $summary=null, $title=null, $authors=null, $paginationPage=0) { 
    ... 
}
Run Code Online (Sandbox Code Playgroud)

我正试图用这个检索所有参数:

$Class = new Search();

// Get parameters
$ReflectionMethod = new \ReflectionMethod($Class, "search");
try {
    foreach($ReflectionMethod->getParameters() AS $Parameter) {
        if(array_key_exists($Parameter->name, $this->params)) {
            $parameters[$Parameter->name] = $this->params[$Parameter->name];
    } elseif($Parameter->isDefaultValueAvailable()) {
        $paramaters[$Parameter->name] = $Parameter->getDefaultValue();
    } else {
            ...
    }
} catch(\Exception $e) {
        ...
}
    // Call function
return call_user_func_array(array($Class, "search"), $parameters);
Run Code Online (Sandbox Code Playgroud)

$this->params有这样的内容:

array
  'paginationPage' => int 2
  'id' => int 30
  'searchKey' => string 'test' (length=4)
Run Code Online (Sandbox Code Playgroud)

因为$ summary,$ title和$ …

php arrays reflection null

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

Doctrine2选择生日范围

我想选择即将到来的5天过生日的所有员工.生日保存在日期字段中.感觉就像我必须使用之间,但是年份范围会破坏结果.

基本上我想在5天的范围内按月和日选择日期.

数据库方案:

CREATE TABLE IF NOT EXISTS `tbl_office_employee` (
  `id` int(11) NOT NULL auto_increment,
  `firstname` varchar(256) collate utf8_unicode_ci default NULL,
  `surname` varchar(256) collate utf8_unicode_ci default NULL,
  `birthdate` date NOT NULL,
  `telephone` varchar(256) collate utf8_unicode_ci default NULL,
  PRIMARY KEY  (`id`)
)
Run Code Online (Sandbox Code Playgroud)

有人知道一个查询来完成这个吗?

mysql sql

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

仅使用jquery加载页面的一部分

我有一个wordpress网站,并希望使用jquery加载我的页面.我只想加载内容div,所以我将这个url传递给你:

var url = $(this).attr('href') + "#content";
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试使用ajax加载页面时,它会加载没有#content部分的url.现在它将整个页面加载到我的div而不是只有我想要的部分.

也许它与我的.htaccess有关:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# RewriteRule ^index\.php$ - [L]
RewriteRule ^(index\.php/?|intro.html)$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

ajax wordpress .htaccess jquery

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

HTML5 + CSS并设置<HEADER>的宽度

我得到了以下css:

div#header, header { 
    height: 88px; 
    width: 100%; 
    background-image: url('/images/header.jpg'); 
    background-repeat:no-repeat; 
}
Run Code Online (Sandbox Code Playgroud)

以下HTML:

<header></header>
<div id="header"></div>
Run Code Online (Sandbox Code Playgroud)

第二个HTML行完全符合我的要求.但是,第一个html行(<header>)没有.

我正在使用Firefox 3.6.8.在firebug中,html-line的标记看起来完全一样.在Internet Explorer中我遇到了同样的问题.只有Chrome会按预期显示代码.

我现在很困惑.如何解决这个问题?

css html5

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