小编Pet*_*ter的帖子

Doctrine 2.1其中外键id =?,编辑:在Doctrine 2.2中修复

我在这里看到了很多答案,这些答案与Doctrine 2.1中严重缺乏功能有关,这可能是OOP正确性胜过关系理智的结果.

我有两个表与多对一的关系,文章和成员.会员可以发表许多文章.拥有方的注释是

/**
 * @var \Member
 * @ORM\ManyToOne(targetEntity="Member")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="member_id", referencedColumnName="id")
 * })
 */
 private $member;
Run Code Online (Sandbox Code Playgroud)

我想获得成员6的所有活动文章,这是一个简单的SQL查询:

SELECT * FROM mbr_article 
   WHERE active = 1 AND member_id = 6 
   ORDER BY article_id DESC
Run Code Online (Sandbox Code Playgroud)

我最终得到的是

$rep = $this->getDoctrine()->getRepository('SMWMemberBundle:Article');
$q = $rep->createQueryBuilder('a')
     ->leftJoin('a.member','m')    
     ->where('m.id = ?1')
     ->andWhere('a.active = 1')
     ->orderBy('a.id', 'DESC')
     ->setParameter(1, $id)    
     ->getQuery();
Run Code Online (Sandbox Code Playgroud)

哪个产生了

SELECT m0_.id AS id0, m0_.active AS active1, m0_.update_time AS update_time2,
       m0_.content AS content3, m0_.member_id AS member_id4 
   FROM mbr_article m0_ 
   LEFT JOIN mbr_member m1_ ON …
Run Code Online (Sandbox Code Playgroud)

sql doctrine-orm

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

Symfony2表单生成器选择跨元素的连接表

我有3个实体:

[Member] ----OneToMany----> [MemberCategory] ---ManyToOne---> [Category]
Run Code Online (Sandbox Code Playgroud)

这对于从数据库中获取结果很有效,但是我无法使表单生成器构建正确的表单控件.

我想要一个包含复选框的所有类别的列表,这些复选框会针对成员使用的类别进行检查.最终我想添加优先级字段.

会员

class Member
{
    protected $id;

    @ORM\OneToMany(targetEntity="MemberCategory", mappedBy="member")
    protected $categories;
}
Run Code Online (Sandbox Code Playgroud)

类别

class Category
{
    protected $id;

    @ORM\Column(name="category_name", type="string", length=50, nullable=false, unique=true)
    private $categoryName;
}
Run Code Online (Sandbox Code Playgroud)

MemberCategory

class MemberCategory
{
    @ORM\Id
    @ORM\ManyToOne(targetEntity="Member")
    @ORM\JoinColumns({
    @ORM\JoinColumn(name="member_id", referencedColumnName="id", onDelete="CASCADE")
    private $member;

    @ORM\Id
    @ORM\ManyToOne(targetEntity="Category")
    @ORM\JoinColumns({
    @ORM\JoinColumn(name="category_id", referencedColumnName="id", onDelete="CASCADE")
    private $category;

    @ORM\Column(name="priority", type="integer", nullable=true)
    protected $priority;
}
Run Code Online (Sandbox Code Playgroud)

使用表单生成器的明显尝试无效.

如果我使用:

$builder->add('categories', 'entity', array(
    'class'        => 'SMWMemberBundle:Category',
    'property'     => 'categoryName',
    'multiple'     => true,
    'expanded'     => true,
    'required'     => false
)); …
Run Code Online (Sandbox Code Playgroud)

forms doctrine symfony symfony-2.3

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

如何刷新Panic Transmit文件列表?

我喜欢FTP和SFTP的Panic Transmit客户端,但由于文件列表被缓存而无法轻松刷新,因此丢失了几次工作.

"视图"菜单中的"刷新"选项仅刷新当前目录,而不执行子目录.

我已经联系了恐慌,并得到了回复,说明它的工作方式,他们想改变它,但不是在这个版本中.我已经尝试了其他几个FTP客户端,发现它们缺乏,例如.Fetch只显示远程端并使用Finder作为本地端,这很快就会让人感到困惑.

有谁知道Transmit保存文件列表的缓存,以便我可以删除它并获得完全刷新?

如果没有,它将通过SCP,RSYNC和命令行FTP回到未来.

ftp caching

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

如何让Rails服务器刷新预编译资产?

我正在使用内置的Webrick服务器在我的localhost:3000上的生产环境中测试我的Rails 4应用程序.当我运行RAILS_ENV=production bundle exec rake assets:precompile资产时,公共重建资产并重建清单,但页面仍然使用以前的资产名称.

重新启动rails服务器会显示新资产.是否有一种不那么极端的方法来实现这一点,当我将其移植到运行Phusion Passenger的生产服务器时,这将如何表现.我真的不想重启Apache以使我的资产处于正常状态.

ruby-on-rails asset-pipeline ruby-on-rails-4

7
推荐指数
1
解决办法
6481
查看次数

基于生成器编写python迭代器的最佳方法是什么?

我一直在寻找一种编写基于生成器的Python迭代器的好方法.我发现了很多关于迭代器主题的教程,很多关于生成器和yield语句的教程,但没有结合这两者的内容.我已经构建了一个有效的小例子,并想知道是否有更好的方法来做到这一点.

class myIterator :

    def __init__(self, n) :
        self.last = n
        self.myGen = self.myGenerator() 

    def __iter__(self) :
        return self.myGenerator()

    def next(self) :
        return self.myGen.next()

    def myGenerator(self) :
        prev = 0
        fib = 1
        while fib < self.last :
            res = fib
            yield res
            fib = fib + prev
            prev = res

        raise StopIteration
Run Code Online (Sandbox Code Playgroud)

我在真实世界的程序中使用了这种技术,可以在我的Github存储库中的SQLStatements.py中找到

最令人困惑的部分是定义next()函数.显而易见的解决方案在每次调用时都返回了第一个元素.存储包含生成器的实例变量有效,但似乎是一个kludge.

如果你知道一个更好的方法来做这个或一个涵盖这个主题的好教程,请告诉我.

编辑:@MartijnPieters发布的第三个例子完全解决了这个问题.保存self.next中的self.generator.next函数提供了下一个函数.我希望这有助于其他人试图解决这个问题.

python iterator generator

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