小编Gri*_*iva的帖子

Doctrine - 查询一对多,单向与来自反向的连接表关联

我的目标是:

创建通用关联,其中第一个实体(例如,类别)可以多次用于其他对象(例如,帖子,文章)

帖子有类别,文章有类别,但文章和帖子是完全不同的实体.(两者不能同时连接)


映射示例:

岗位

<?php
/** @Entity */
class Post
{
    // ...

    /**
     * @ManyToMany(targetEntity="Category")
     * @JoinTable(name="post_categories",
     *      joinColumns={@JoinColumn(name="post_id", referencedColumnName="id")},
     *      inverseJoinColumns={@JoinColumn(name="category_id", referencedColumnName="id", unique=true)}
     *      )
     */
    private $categories;

    public function __construct()
    {
        $this->categories= new \Doctrine\Common\Collections\ArrayCollection();
    }

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

文章

<?php
/** @Entity */
class Article
{
    // ...

    /**
     * @ManyToMany(targetEntity="Category")
     * @JoinTable(name="article_categories",
     *      joinColumns={@JoinColumn(name="article_id", referencedColumnName="id")},
     *      inverseJoinColumns={@JoinColumn(name="category_id", referencedColumnName="id", unique=true)}
     *      )
     */
    private $categories;

    public function __construct()
    {
        $this->categories= new …
Run Code Online (Sandbox Code Playgroud)

php mysql doctrine-query symfony doctrine-orm

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

Wordpress get_terms为自定义分类返回空数组

我对Wordpress Taxonomies有点问题......下面你可以看到我的自定义分类法的初始化命名job_keywords.

function register_job_keywords() {

    $labels = array(
        [... lables here ...]
    );
    $args = array(
        'labels'                     => $labels,
        'hierarchical'               => false,
        'public'                     => true,
        'show_ui'                    => true,
        'show_admin_column'          => true,
        'show_in_nav_menus'          => true,
        'show_tagcloud'              => true,
    );
    register_taxonomy( 'job_keywords', array( 'job' ), $args );
}
Run Code Online (Sandbox Code Playgroud)

我也将它实现为自定义帖子类型job.

$args = array(
    [...]
    'taxonomies'          => array( 'job_category' , 'job_keywords'),
    'hierarchical'        => false,
    [...]
Run Code Online (Sandbox Code Playgroud)

插件初始化我调用函数register_job_keywords(),它让我看到wp-admin中的关键字,我可以像标签等一样添加它们.所以一切正常在界面,我去我的PHP文件,并显示所有的分类.所以我得到了这个:

Array
(
    [category] => …
Run Code Online (Sandbox Code Playgroud)

php arrays wordpress custom-taxonomy

4
推荐指数
1
解决办法
2198
查看次数

Symfony2 / Doctrine2 - 检查实体对象是新的,从未持久化

简短而简单的问题:

如何判断 Doctrine PHPEntity对象是新的?

新的-我的意思是不在数据库中并且它不是“更新”操作。最重要的是 - 我需要在没有任何查询的情况下检查它的方法,例如:

$manager->findOne($something);
Run Code Online (Sandbox Code Playgroud)

实际上有时我尝试检查“ID 是否为空”,但我不能 100% 确定这个方法是否有效。以及这个问题的其他提示或可能的核心 - 我看到了类似的东西:

$manager->getUnitOfWork()->isInIdentityMap($object);
Run Code Online (Sandbox Code Playgroud)

看起来不错,但我找不到实际的功能isInIdentityMap。如果它被保留或删除,这是真的吗?这个函数什么时候说 true 和 false?


//EDIT

我需要检测第一次创建的实体对象- 仅存在于 php 中,但不存在于数据库中。当然,从数据库加载实体以应用更新对我来说并不新鲜 - 例如:

当您创建Comment对象时,您需要递增commentCounter,但仅当您第一次刷新此注释时才应递增。您不想在更新或删除现有评论时增加它。如何检查评论是新的并且计数器应该增加。

请在答案中解释为什么你的方法好/更好

php unit-of-work symfony doctrine-orm

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