我使用doctrine过滤器,最近注意到过滤器不适用于删除语句.我试图通过文档和谷歌挖掘,但神秘仍未解决.
例如,我有过滤器连接用户和公司所以每个选择查询,如:
$userRepo->find(12);
Run Code Online (Sandbox Code Playgroud)
并从中进行了修改
SELECT .... FROM user t0 WHERE t0.id = 12
成
SELECT .... FROM user t0 WHERE t0.id = 12 AND(t0.company_id ='6')
很酷,这就是我需要的.
困扰我的是删除语句似乎没有受到影响.有谁知道它是默认的doctrine架构还是我的配置错了?
过滤器
use Doctrine\ORM\Mapping\ClassMetaData;
use Doctrine\ORM\Query\Filter\SQLFilter;
use Doctrine\Common\Annotations\Reader;
class CompanyAware extends SQLFilter
{
/**
* @var Reader
*/
protected $reader;
/**
* @param ClassMetaData $targetEntity
* @param string $targetTableAlias
*
* @return string
*/
public function addFilterConstraint(ClassMetadata $targetEntity, $targetTableAlias)
{
$query = '';
$ann = 'Mrok\\PortalBundle\\Annotation\\CompanyAware';
$isAware = $this->reader->getClassAnnotation($targetEntity->getReflectionClass(), $ann);
if ($isAware) {
$id …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用HWIOAuthBundle设置Symfony2.1 来处理谷歌oauth身份验证.
我已遵循捆绑说明中的手动说明,但仍然缺少某些内容.当我访问需要经过身份验证的用户(或只是输入url/connect/google)的操作时,我被重定向到Google身份验证页面 - 此部分正常运行.但是在重定向后(在登录Google并同意共享我的数据后),新用户不会在数据库中创建,我被重定向到连接/失败操作.Google身份验证应该只是验证用户身份的一种方法.知道什么可能是错的吗?
这是我的路线:
hwi_oauth_redirect:
resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
prefix: /connect
google_login:
pattern: /login/check-google
Run Code Online (Sandbox Code Playgroud)
security.yml
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
secured_area:
pattern: ^/
form_login:
provider: fos_userbundle
login_path: /connect/google
check_path: /login/login_check
logout: true
anonymous: true
oauth:
resource_owners:
google: "/login/check-google"
login_path: /connect/google
failure_path: /connect-fail
# FOSUB integration
oauth_user_provider:
service: hwi_oauth.user.provider.fosub_bridge
Run Code Online (Sandbox Code Playgroud)
和配置
hwi_oauth:
firewall_name: secured_area
resource_owners:
google:
type: google
client_id: ....
client_secret: ......
scope: "https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"
fosub:
username_iterations: 5
properties:
google: googleId
Run Code Online (Sandbox Code Playgroud)
谷歌redirectURL
http://xxxx/login/check-google
Run Code Online (Sandbox Code Playgroud)
我的用户实体:
class User extends BaseUser
{ …Run Code Online (Sandbox Code Playgroud) 我正在尝试将PhpUnit与Composer一起使用.为此我做了:
1添加phpunit到req composer部分:
Run Code Online (Sandbox Code Playgroud)"require": { "php": ">=5.3.0" }, "require-dev": { "phpunit/phpunit": "3.7.*" }, "autoload": { "psr-0": {"PhpProject": "src/"} }
2安装所需的东西:
php composer.phar install --dev
操作成功完成.
安装phpunit/phpunit(3.7.6)下载:100%
不幸的是,当我想运行测试时,我得到了
./vendor/bin/phpunit PHP致命错误:在第12行的/home/serek/php/project/tests/bootstrap.php中调用非对象的成员函数add()
出现问题是因为返回ComposerAutoloaderInit :: getLoader(); 在vendor/autoload中,将NULL返回到测试引导程序中.
任何想法如何在没有黑客加载器的情况下解决它?
代码:phpunnit.xml.dist
> <?xml version="1.0" encoding="UTF-8"?>
>
> <phpunit bootstrap="tests/bootstrap.php" colors="true">
> <testsuites>
> <testsuite name="PhpProject Test Suite">
> <directory>tests/PhpProject/</directory>
> </testsuite>
> </testsuites>
>
> <filter>
> <whitelist>
> <directory suffix=".php">src/PhpProject/</directory>
> </whitelist>
> </filter> </phpunit>
Run Code Online (Sandbox Code Playgroud)
tests/bootstrap.php(这里我只需要自动加载器)
> $loader = require_once __DIR__ . "/../vendor/autoload.php";
> $loader->add('PhpProject\\', …Run Code Online (Sandbox Code Playgroud) 我正在编写一个应用程序来收集UDP消息并每1秒处理一次.
应用程序原型如下:
from twisted.internet.protocol import DatagramProtocol
from twisted.internet import reactor
import threading
import time
class UdpListener(DatagramProtocol):
messages = []
def datagramReceived(self, data, (host, port)):
self.messages.append(data)
class Messenger(threading.Thread):
listener = None
def __init__(self):
threading.Thread.__init__(self)
def run(self):
while True:
time.sleep(1)
recivedMessages = self.listener.messages
length = len(recivedMessages)
messagesToProccess = recivedMessages[0:length]
#doSomethingWithMessages(messagesToProccess)
del self.listener.messages[0:length]
print(length)
listener = UdpListener()
messenger = Messenger()
messenger.listener = listener
messenger.start()
reactor.listenUDP(5556, listener)
reactor.run()
Run Code Online (Sandbox Code Playgroud)
我不确定我是否可以轻松地从列表中删除起始值(del self.listener.messages [0:length]),而不会有任何传入消息更改列表和应用程序崩溃的风险.
更新 - 带锁的版本
class Messenger(threading.Thread):
listener = None
lock = threading.Lock()
def __init__(self): …Run Code Online (Sandbox Code Playgroud) 我试图从源代码安装Grails.我3天前开始,但仍有一些问题.每次尝试都以消息结束:
:grails-bootstrap:compileGroovy
[ant:groovyc] >>> a serious error occurred: grails/util/BuildSettings
[ant:groovyc] >>> stacktrace:
[ant:groovyc] java.lang.NoClassDefFoundError: grails/util/BuildSettings
[ant:groovyc] at java.lang.Class.getDeclaredMethods0(Native Method)
[ant:groovyc] at java.lang.Class.privateGetDeclaredMethods(Class.java:2440)
[ant:groovyc] at java.lang.Class.getDeclaredMethods(Class.java:1806)
Execution failed for task ':grails-bootstrap:compileGroovy'.
> Forked groovyc returned error code: 1
Run Code Online (Sandbox Code Playgroud)
我使用的是Ubuntu 12.04 LTS 64bit
我做了什么:
安装java
java版"1.7.0-ea"
Java(TM)SE运行时环境(版本1.7.0-ea-b76)
Java HotSpot(TM)64位服务器VM(版本17.0-b05,混合模式)
安装groovy
Groovy版本:2.0.0 JVM:1.7.0-ea供应商:Sun Microsystems Inc.操作系统:Linux
克隆grails并将其签出到v2.1.0
调用sudo ./gradlew install
如果我使用--stacktrace --info --debug
00:15:19.777 [ERROR] [org.gradle.BuildExceptionReporter] FAILURE: Build failed with an exception.
00:15:19.779 [ERROR] [org.gradle.BuildExceptionReporter]
00:15:19.780 [ERROR] [org.gradle.BuildExceptionReporter] * What went wrong:
00:15:19.781 [ERROR] …Run Code Online (Sandbox Code Playgroud) 我有Behat用于BDD测试的Symfony2项目.
大多数测试都有标记,例如:
@database @user_management @admin
Scenario: Attempt .....
....
....
@product @admin
Scenario: Login ....
....
....
Run Code Online (Sandbox Code Playgroud)
在运行整个测试套件之前,我希望能够列出所有标记有特定标签的scenerios.可能吗?
我的意思是我可以编写分析所有功能文件的小脚本,但我希望有一些魔术开关/标志,已经实现,但没有记录,这就是我需要的.
symfony ×3
php ×2
behat ×1
composer-php ×1
doctrine-orm ×1
grails ×1
groovy ×1
linux ×1
oauth-2.0 ×1
phpunit ×1
python ×1
symfony-2.1 ×1
twisted ×1
ubuntu ×1
udp ×1