我有5个实体:
这是架构:

一些细节:
WebUser是在网站上注册的人员.对于每个Webuser,都有一个人员ID.
一个人可以是网络用户,作者等.
每个WebUser都有0个或更多个从属关系.这些隶属关系是由这个WebUser创建的,并在能干的UserAffiliations中链接.
Web用户还可以将他创建的从属关系链接到一个人(如果该人是作者),并且将填充实体人员关系.
我现在正试图让webuser为作者(人)分配一个联盟.为此,我有:
在实体人员中
@ORM\OneToMany(targetEntity="PersonAffiliation", mappedBy="person", cascade={"persist", "remove"})
protected $affiliations;
Run Code Online (Sandbox Code Playgroud)在PersonAffiliation中
@ORM\ManyToOne(targetEntity="Person", inversedBy="affiliations")
@ORM\JoinColumn(name="person_id", referencedColumnName="id")
protected $person;
@ORM\ManyToOne(targetEntity="Affiliation", inversedBy="person_affiliations")
@ORM\JoinColumn(name="affiliation_id", referencedColumnName="id")
protected $affiliation;
Run Code Online (Sandbox Code Playgroud)在实体用户中:
@ORM\OneToMany(targetEntity="UserAffiliation", mappedBy="user")
protected $affiliations;
@ORM\ManyToOne(targetEntity="Person")
@ORM\JoinColumn(name="person_id", referencedColumnName="id")
protected $person;
Run Code Online (Sandbox Code Playgroud)在Entity UserAffiliation中
@ORM\ManyToOne(targetEntity="User", inversedBy="affiliations")
@ORM\JoinColumn(name="user_id", referencedColumnName="id")
protected $user;
@ORM\ManyToOne(targetEntity="Affiliation", inversedBy="user_affiliations")
@ORM\JoinColumn(name="affiliation_id", referencedColumnName="id")
protected $affiliation;
Run Code Online (Sandbox Code Playgroud)在表单中,我正在做下一个:
$builder->add('affiliations', 'entity', array(
'class' => 'SciForumVersion2Bundle:PersonAffiliation',
'query_builder' => function($em) use ($person){
return $em->createQueryBuilder('pa')->where('pa.person_id = :id')->setParameter('id', $person->getId());
},
'property' => 'affiliation',
'multiple' => …Run Code Online (Sandbox Code Playgroud) 我有一个listView vith一些项目.
我想从我的onClickListener获取所选项的名称(String).
我知道如何获得所选位置,但如何找到这个元素的字符串?
这是我的点击监听器:
journalNames.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,int position, long id)
{
}});
Run Code Online (Sandbox Code Playgroud)
我的listView中填充了一些来自数据库的查询.
谢谢.
我在渲染树枝模板时在控制器中设置了一条flash消息.如果有帖子操作,我想重定向到同一页面,但更改Flash消息.
if ($request->isMethod('POST')) {
...
...
$this->get('session')->getFlashBag()->clear(); // Does not work
$this->get('session')->getFlashBag()->all(); // Does not work
$request->getSession()->getFlashBag()->set('user-notice', $flash_message2);
return $this->redirect($request->headers->get('referer'));
}
$this->get('session')->getFlashBag()->set('user-notice', $flash_message1);
return $this->render(....
Run Code Online (Sandbox Code Playgroud)
但问题是显示的flash消息是$ flash_message1,应该是$ flash_message2.
当尝试使用add而不是set时,我可以看到它们.我试图使用Symfony2 clear()和all()函数:http://api.symfony.com/2.3/Symfony/Component/HttpFoundation/Session/Flash/FlashBagInterface.html 但没有任何改变.
任何的想法?谢谢 !!!
我在Symfony2项目中有一个文件上传功能,我想验证上传的文件是.tex文件格式=> LaTex文件.对于text/html,我正在使用:
$metadata->addPropertyConstraint('file', new Assert\File(array(
'maxSize' => '100000k',
'mimeTypes' => array("text/html"),
'mimeTypesMessage' => 'Please upload a valid HTM/HTML File',
)));
Run Code Online (Sandbox Code Playgroud)
我在尝试:
$metadata->addPropertyConstraint('file', new Assert\File(array(
'maxSize' => '100000k',
'mimeTypes' => array(
'text/html',
'application/x-tex',
'application/x-latex'
),
'mimeTypesMessage' => 'Please upload a valid HTM/HTML/TEX File',
)));
Run Code Online (Sandbox Code Playgroud)
但是当我上传.tex文件时,我收到的消息是:
Please upload a valid HTM/HTML/TEX File.
Run Code Online (Sandbox Code Playgroud)
我怎么能在这里添加Tex文件?谢谢.
我有一个这样的字符串:
var str = 'aaaaaa, bbbbbb, ccccc, ddddddd, eeeeee ';
Run Code Online (Sandbox Code Playgroud)
[space]是一个真实的空间,而不是一个字符串,但我不知道如何展示它.
我的目标是删除字符串中的最后一个空格.我可以用
str.split(0,1);
Run Code Online (Sandbox Code Playgroud)
但是如果最后一个字符串后面没有空格,这将减少字符串的最后一个字符.
我想用
str.replace("regex",'');
Run Code Online (Sandbox Code Playgroud)
如果你能帮助我,我是正则表达式的初学者.
非常感谢你.
我想在我的Android应用程序中使用GCM服务.
为此,我使用了http://developer.android.com/guide/google/gcm/gcm.html上的android文档
我创建了客户端注册过程与发件人ID等和服务器端应用程序,我使用注册ID和发件人ID发送邮件.
当我通过Eclipse在我的手机中安装应用程序时,推送通知工作正常,所以发件人ID我是正确的.
然后,当我用Eclipse导出apk文件并将其安装在我的手机中时,我收到SenderId错误的错误消息
MissmatchedSenderId
Run Code Online (Sandbox Code Playgroud)
任何人都知道为什么我会得到这个.
我已经阅读了这些主题:
为什么我从GCM服务器端获得"MismatchSenderId"?
使用GCM发送消息时,我不断收到响应'MismatchSenderId'
但在我的情况下奇怪的是,在将应用程序导出为apk之前一切正常,然后我遇到了这个问题.
任何想法都是最好的.
我有一个控制器,我在其中创建一个表单,其中包含两个下拉列表.
当我渲染我的视图时,我希望在页面的顶部和底部具有相同的表单元素.问题是表单elemet(下拉列表)仅显示在页面顶部,即使我要求twig将它们也放在底部.
这是我想要的:

1和2是下拉列表.我想在页面的顶部和底部复制它.
关于如何做到这一点的任何想法?
顶部内容和底部内容(两个下拉列表位于其中)位于单个sseparate twig文件(searchPanel.html.twig)中,此文件包含在页面中
{% include "MyBundle:Search:searchPanel.html.twig" %}
Run Code Online (Sandbox Code Playgroud)
这是searchPanel.html.twig
<div class="searchPanel">
<form action="{{ path }}" method="POST" {{ form_enctype(form) }}>
Papers per page
{{ form_widget(form.papers_per_page, { 'class': 'ppp'}) }}
/ Sort by
{{ form_widget(form.sort_by, { 'class': 'sort'}) }}
{{ form_rest(form) }}
/ Papers ({{ papers_number }} results)
<input type="submit" class="updateSearchResults" value="Update"></input>
</form>
Run Code Online (Sandbox Code Playgroud) 我在Symfony2上有一个联系表单,我把一些验证器作为电子邮件,minLength等.所有这些字段也设置为notBlank.
因此,HTML5也验证了这些字段(对于电子邮件而非空白),这对我来说很好.
我有一个提交按钮:
<input type="submit" value="Submit"/>
Run Code Online (Sandbox Code Playgroud)
问题是我有另一个提交按钮,它是一个取消按钮:
<input name="cancel" type="submit" value="Cancel" />
Run Code Online (Sandbox Code Playgroud)
使用此按钮,在我的控制器中,我正在进行重定向:
if( $request->get('cancel') == 'Cancel' )
return $this->redirect($this->generateUrl('SciForumVersion2Bundle_homepage'));
Run Code Online (Sandbox Code Playgroud)
现在,由于HTML5验证,我无法重定向,因为例如字段为空.
为了重新解决这个问题,我找到了两个解决方案,但我不喜欢它们:
禁用HTML 5验证:
<form novalidate>
Run Code Online (Sandbox Code Playgroud)使用JavaScript
但正如我所说,我不喜欢这些方法,我相信有一些很好的Symfony方法可以解决这个问题.
任何的想法?非常感谢你.
我有一个Symfony 2.4.x项目.
在那里,我有两个映射在一起的实体:会议和论文.
每个会议都有论文和特定会议,我想获得论文数量.
为此,在我的会议实体中,我有:
/**
* @ORM\OneToMany(targetEntity="Paper", mappedBy="conference")
*/
protected $papers;
Run Code Online (Sandbox Code Playgroud)
在实体论文中我有:
/**
* @ORM\ManyToOne(targetEntity="Conference", inversedBy="papers")
* @ORM\JoinColumn(name="conference_id", referencedColumnName="id")
*/
protected $conference;
Run Code Online (Sandbox Code Playgroud)
当我在Symfony2.0上有这个项目时,一切都运行良好,但现在我在Symfony 2.4.x中迁移它,我在尝试时遇到以下错误:
count($conf->getPapers()); // In the controller
{{ conf.papers | length }} // In the twig template
Run Code Online (Sandbox Code Playgroud)
错误:
ContextErrorException: Notice: Undefined index: hash_key in /var/www/git/conference2.0-v2.4/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php line 121
Run Code Online (Sandbox Code Playgroud)
编辑:以下是pastebin中两个实体的完整类:
编辑2:这是我通过尝试解决问题找到的一些消息.另有一个classe参与其中:提交.
这是代码:http://pastebin.com/bkdRtjdq
在Submission类中,我有主键是hash_key而不是id.
我需要使用PHP从MySQL DB中选择一些数据.它可以在一个单独的MySQL查询中完成,在一个好的服务器上运行需要5分钟(在具有超过10 Mio行的表上有多个JOIN).
我想知道在PHP中拆分查询并使用一些循环而不是MySQL是否是更好的做法.此外,最好从一个表中查询数据中150,000行的所有电子邮件,然后检查数组而不是执行数千个MySQL SELECT.
这是查询:
SELECT count(contacted_emails.id), contacted_emails.email
FROM contacted_emails
LEFT OUTER JOIN blacklist ON contacted_emails.email = blacklist.email
LEFT OUTER JOIN submission_authors ON contacted_emails.email = submission_authors.email
LEFT OUTER JOIN users ON contacted_emails.email = users.email
GROUP BY contacted_emails.email
HAVING count(contacted_emails.id) > 3
Run Code Online (Sandbox Code Playgroud)
4个表中的索引是:
contacted_emails: id, blacklist_section_id, journal_id and mail
blacklist: id, email and name
submission_authors: id, hash_key and email
users: id, email, firstname, lastname, editor_id, title_id, country_id, workplace_id
Run Code Online (Sandbox Code Playgroud)
jobtype_id
contact_emails表创建如下:
CREATE TABLE contacted_emails (
id int(10) unsigned NOT NULL …Run Code Online (Sandbox Code Playgroud) php ×6
symfony ×6
twig ×4
android ×2
doctrine-orm ×2
entity ×2
validation ×2
arrays ×1
controller ×1
html5 ×1
javascript ×1
latex ×1
mime-types ×1
mysql ×1
regex ×1