Symfony ArrayCollection 与 PersistentCollection

2024-04-26

据我了解,当您通过存储库查询数据库时,您会得到 PersistentCollection,而当您使用实体时,您会得到 ArrayCollection。

因此,考虑到我的用户实体有一对多的自引用关系。

在我的用户实体中,我有一个 setChildren 方法,它将用户的 ArrayCollection 作为参数。

<?php

namespace UserBundle\Entity;

use Abstracts\Entity\BaseModel;
use CertificateBundle\Entity\Certificate;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use EducationBundle\Entity\Education;
use LanguageBundle\Entity\Language;
use PostBundle\Entity\Post;
use ProfileBundle\Entity\Company;
use RoleBundle\Entity\Role;
use SkillBundle\Entity\Skill;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;

/**
 * User
 *
 * @ORM\Table(name="users")
 * @ORM\Entity(repositoryClass="UserBundle\Repository\Entity\UserRepository")
 * @UniqueEntity("email")
 * @UniqueEntity("username")
 */
class User implements UserInterface
{


    use BaseModel;
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;


    /**
     * @var string
     *
     * @ORM\Column(name="type", type="string", columnDefinition="ENUM('merchant', 'company', 'customer') ")
     */
    private $type;


    /**
     * @ORM\Column(type="string", unique=true)
     * @Assert\NotBlank()
     */
    private $username;

    /**
     * @var string
     *
     * @ORM\Column(type="string", length=255)
     * @Assert\NotBlank()
     */
    private $email;


    /**
     * @var string
     * @ORM\Column(type="string", nullable=true)
     */
    private $avatar = null;
    /**
     * @var string
     * @ORM\Column(type="string", nullable=true)
     */
    private $cover = null;


    /**
     * @ORM\OneToMany(targetEntity="PostBundle\Entity\Post", mappedBy="user", orphanRemoval=true, cascade={"persist", "remove"})
     */
    private $posts;

    /**
     * @ORM\OneToMany(targetEntity="EducationBundle\Entity\Education" , mappedBy="user" , orphanRemoval=true, cascade={"persist", "remove"})
     */
    protected $educations;


    /**
     * @ORM\OneToMany(targetEntity="SkillBundle\Entity\SkillUser" , mappedBy="user" , orphanRemoval=true, cascade={"persist", "remove"})
     */
    protected $skills;

    /**
     * @ORM\OneToMany(targetEntity="LanguageBundle\Entity\LanguageUser" , mappedBy="user" , orphanRemoval=true, cascade={"persist", "remove"})
     */
    protected $languages;


    /**
     * @ORM\OneToMany(targetEntity="ResumeBundle\Entity\Resume" , mappedBy="user" , cascade={"all"})
     */
    protected $resumes;


    /**
     * @ORM\OneToMany(targetEntity="CertificateBundle\Entity\CertificateUser" , mappedBy="user" , orphanRemoval=true, cascade={"persist", "remove"})
     */
    protected $certificates;


    /**
     * @ORM\OneToOne(targetEntity="ProfileBundle\Entity\Company", mappedBy="user")
     */
    protected $company;

    /**
     * @ORM\OneToOne(targetEntity="ProfileBundle\Entity\Customer", mappedBy="user")
     */
    protected $customer;

    /**
     * @ORM\OneToOne(targetEntity="ProfileBundle\Entity\Merchant", mappedBy="user")
     */
    protected $merchant;




    /**
     * @var string
     * @Assert\NotBlank()
     * @Assert\Length(min=4)
     * @ORM\Column(name="password", type="string", length=255)
     *
     */
    private $password;

    /**
     * @ORM\ManyToMany(targetEntity="RoleBundle\Entity\Role", inversedBy="users", cascade={"persist"})
     * @ORM\JoinTable(name="user_role", joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")}, inverseJoinColumns={@ORM\JoinColumn(name="role_id", referencedColumnName="id")})
     */
    private $roles;



    /**
     * @ORM\ManyToOne(targetEntity="UserBundle\Entity\User", inversedBy="children")
     * @ORM\JoinColumn(name="parent_id", referencedColumnName="id", onDelete="SET NULL")
     */
    protected $parent;


    /**
     * @ORM\OneToMany(targetEntity="UserBundle\Entity\User", mappedBy="parent", orphanRemoval=true, cascade={"persist", "remove"})
     *
     */
    protected $children;


    /**
     * @var array
     */
    public static $fields = [ 'email', 'username', 'id', 'avatar', 'cover', 'type'];

    /**
     * User Entity constructor.
     */
    public function __construct(/*EncoderFactoryInterface $encoderFactory*/)
    {
        //$this->encoderFactory = $encoderFactory;
        $this->posts        = new ArrayCollection();
        $this->skills       = new ArrayCollection();
        $this->languages    = new ArrayCollection();
        $this->certificates = new ArrayCollection();
        $this->educations   = new ArrayCollection();
        $this->children     = new ArrayCollection();

        dump($this->children);
        die();

    }




    /**
     * @param User $user
     * @return $this
     */
    public function setParent(User $user)
    {
        $this->parent = $user;

        return $this;
    }


    /**
     * @return $this
     */
    public function removeParent()
    {
        $this->parent = null;

        return $this;
    }



    /**
     * @param User $user
     * @return $this
     */
    public function addChild(User $user)
    {
        if(!$this->children->contains($user)){
            $this->children->add($user);
        }

        return $this;
    }


    /**
     * @param User $user
     * @return bool
     */
    public function hasChild(User $user)
    {
        return $this->children->contains($user);
    }



    /**
     * @param User $user
     * @return bool
     */
    public function isChildOf(User $user)
    {
        return $user->getChildren()->contains($this);
    }

    /**
     * @return ArrayCollection
     */
    public function getChildren()
    {
        return $this->children;
    }

    /**
     * @param User $user
     * @return $this
     */
    public function removeChild(User $user)
    {
        if($this->children->contains($user)){
            $this->children->removeElement($user);
        }

        return $this;
    }

    /**
     * @param ArrayCollection $users
     * @return $this
     */
    public function setChildren(ArrayCollection $users)
    {
        $this->children = $users;

        return $this;
    }


    /**
     * @return $this
     */
    public function removeChildren()
    {
        $this->children->clear();

        return $this;
    }


    /**
     * @param ArrayCollection $certificates
     * @return $this
     */
    public function setCertificates(ArrayCollection $certificates)
    {
        $this->certificates = $certificates;

        return $this;
    }


    /**
     * @param Certificate $certificate
     * @return $this
     */
    public function addCertificate(Certificate $certificate)
    {
        if(!$this->certificates->contains($certificate))
            $this->certificates->add($certificate);

        return $this;
    }

    /**
     * @param Certificate $certificate
     * @return $this
     */
    public function removeCertificate(Certificate $certificate)
    {
        if($this->certificates->contains($certificate))
            $this->certificates->removeElement($certificate);

        return $this;
    }

    /**
     * @return $this
     */
    public function removeCertificates()
    {
        $this->certificates->clear();

        return $this;
    }


    /**
     * @param ArrayCollection $skills
     * @return $this
     */
    public function setSkills(ArrayCollection $skills)
    {
        $this->skills = $skills;

        return $this;
    }


    /**
     * @param Skill $skill
     * @return $this
     */
    public function addSkill(Skill $skill)
    {
        if(!$this->skills->contains($skill))
            $this->skills->add($skill);

        return $this;
    }

    /**
     * @param Skill $skill
     * @return $this
     */
    public function removeSkill(Skill $skill)
    {
        if($this->skills->contains($skill))
            $this->skills->removeElement($skill);

        return $this;
    }

    /**
     * @return $this
     */
    public function removeSkills()
    {
        $this->skills->clear();

        return $this;
    }




    /**
     * @param ArrayCollection $languages
     * @return $this
     */
    public function setLanguages(ArrayCollection $languages)
    {
        $this->languages = $languages;

        return $this;
    }


    /**
     * @param Language $language
     * @return $this
     */
    public function addLanguage(Language $language)
    {
        if(!$this->languages->contains($language))
            $this->languages->add($language);

        return $this;
    }

    /**
     * @param Language $language
     * @return $this
     */
    public function removeLanguage(Language $language)
    {
        if($this->languages->contains($language))
            $this->languages->removeElement($language);

        return $this;
    }

    /**
     * @return $this
     */
    public function removeLanguages()
    {
        $this->languages->clear();

        return $this;
    }


    /**
     * @param ArrayCollection $posts
     * @return $this
     */
    public function setPosts(ArrayCollection $posts)
    {
        $this->posts = $posts;

        return $this;
    }

    /**
     * @param Post $post
     * @return $this
     */
    public function addPost(Post $post)
    {
        $this->posts->add($post);

        return $this;
    }

    /**
     * @param Post $post
     * @return $this
     */
    public function removePost(Post $post)
    {
        $this->posts->removeElement($post);

        return $this;
    }

    /**
     * @return $this
     */
    public function removePosts()
    {
        $this->posts->clear();

        return $this;
    }


    /**
     * @param ArrayCollection $educations
     * @return $this
     */
    public function setEducations(ArrayCollection $educations)
    {
        $this->educations = $educations;

        return $this;
    }

    /**
     * @param Education $education
     * @return $this
     */
    public function addEducation(Education $education)
    {
        $this->educations->add($education);

        return $this;
    }

    /**
     * @param Education $education
     * @return $this
     */
    public function removeEducation(Education $education)
    {
        $this->educations->removeElement($education);

        return $this;
    }

    /**
     * @return $this
     */
    public function removeEducations()
    {
        $this->educations->clear();

        return $this;
    }


    /**
     * Get id
     *
     * @return integer
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * @param integer $id
     * @return $this
     */
    public function setId($id)
    {
        $this->id = $id;

        return $this;
    }

    /**
     * @return mixed
     */
    public function getType()
    {
        return $this->type;
    }

    /**
     * @param mixed $type
     * @return $this
     */
    public function setType($type)
    {
        $this->type = $type;

        return $this;
    }


    /**
     * Set email
     *
     * @param string $email
     * @return User
     */
    public function setEmail($email)
    {
        $this->email = $email;

        return $this;
    }


    /**
     * @return string
     */
    public function getEmail()
    {
        return $this->email;
    }


    /**
     * @param $username
     * @return $this
     */
    public function setUsername($username)
    {
        $this->username = $username;
        return $this;
    }

    /**
     * @return mixed
     */
    public function getUsername()
    {
        return $this->username;
    }

    /**
     * @return array
     */
    public function getRoles()
    {
        return ['ROLE_USER', 'IS_AUTHENTICATED_ANONYMOUSLY'];
    }

    /**
     * @param $password
     * @return $this
     */
    public function setPassword($password)
    {
        //$password =$this->encoderFactory->getEncoder($this)->encodePassword($password, $this->getSalt());

        $this->password = $password;
        return $this;

    }

    /**
     * @return string
     */
    public function getPassword()
    {
        return $this->password;
    }

    /**
     *
     */
    public function getSalt()
    {
        return md5(sha1('somesalt'));
    }

    /**
     *
     */
    public function eraseCredentials()
    {
    }

    /**
     * @param $cover
     * @return $this
     */
    public function setCover($cover)
    {
        $this->cover = $cover;
        return $this;

    }

    /**
     * @return string
     */
    public function getCover()
    {
        return $this->cover;
    }

    /**
     * @param $avatar
     * @return $this
     */
    public function setAvatar($avatar)
    {
        $this->avatar = $avatar;
        return $this;

    }

    /**
     * @return string
     */
    public function getAvatar()
    {
        return $this->avatar;

    }


    /**
     * @param Role $roles
     */
    public function addRoles(Role $roles)
    {
        $this->roles[] = $roles;
    }

    /**
     * @return mixed
     */
    public function getRoles2()
    {
        return $this->roles;
    }

    /**
     * @return array
     */
    public function getRolesAsArray()
    {
        $rolesArray = [];
        foreach ($this->getRoles2() as $role) {
            $rolesArray[] = $role->getName();

        }
        return $rolesArray;

    }


    /**
     * @return Company
     */
    public function getCompany()
    {
        return $this->company;
    }

    /**
     * @param Company $company
     * @return $this
     */
    public function setCompany(Company $company)
    {
        $this->company = $company;

        return $this;
    }

}

这就是我想做的

$new_owner = $this->userRepository->findOneById($user_id, false);

$children = $old_owner->getChildren();

$old_owner->removeChildren();
$new_owner->setChildren($children);

我收到错误消息:

参数 1 传递给 Proxies__CG__\UserBundle\Entity\User::setChildren() 必须是 Doctrine\Common\Collections\ArrayCollection 的实例, 给出的 Doctrine\ORM\PersistentCollection

我应该将 setChildren 方法中的类型提示更改为 PersistentCollection 吗? 或者我需要完全改变我的方法?


简短回答:

/**
 * @param Doctrine\Common\Collections\Collection $users
 * @return $this
 */
public function setChildren(Doctrine\Common\Collections\Collection $users)
{
    $this->children = $users;

    return $this;
}

解释:

如果您深入研究 Doctrine Classes,您将看到以下结构:

数组集合是实现接口 Collection 的类:

class ArrayCollection implements Collection, Selectable

PersistentCollection 是扩展 AbstractLazyCollection 的类:

final class PersistentCollection extends AbstractLazyCollection implements Selectable

但 AbstractLazyCollection 实现了 Collection:

abstract class AbstractLazyCollection implements Collection

So:

集合是接口,您应该在方法中使用它setChildren().

这是因为原则使用延迟加载机制,该机制允许加载并非所有属性,而仅加载所需的属性。

类似问题:

教义 ManyToMany 返回 PersistentCollection 而不是 ArrayCollection https://stackoverflow.com/questions/38410665/doctrine-manytomany-return-persistentcollection-instead-of-arraycollection

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Symfony ArrayCollection 与 PersistentCollection 的相关文章

  • Laravel 如何使用查询生成器返回单列值

    我想使用 SQL 查询中的数据 为了进一步解释它 这里是我的代码 myquery DB table attendances gt select user id gt where date only newdate gt orderBy lo
  • INET6_ATON 的替代 MySQL 代码

    将旧的 INET ATON 值转换为新的二进制 INET6 ATON 值 无需 INET6 ATON INET6 NTOA 我们在表中已有数据 字段类型为UNSIGNED INT其中保存了使用以下命令创建的 IPv4 数据INET ATON
  • Tomcat 8 上的 PHP

    我找到了很多如何让 PHP 在 Tomcat 上运行的指南 但都是以前的版本 我尝试了所有这些 但我所能显示的只是一个空白页面 并且代码仍然没有被触发 我知道 Tomcat 是为 Java 应用程序而不是 PHP 构建的 但我需要找到一种使
  • 如何正确转义 mysql“搜索/喜欢”查询?

    Summary 我目前正在使用 search field LIKE this gt db gt escape like str search string 逃避动态创建的搜索查询 创建的 SQL 语句结果不会产生任何错误 也不会产生任何结果
  • MySQL:主键的所有部分都必须为 NOT NULL;如果您需要在键中使用 NULL,请使用 UNIQUE 代替

    我的 MySQL 有问题 我创建了名为 BucketList 的数据库 然后尝试创建名为 tbl user 的表 它看起来像这样 CREATE TABLE BucketList tbl user user id BIGINT NULL AU
  • 严格标准:在 wordpress/wp-includes/class-oembed.php 第 116 行中,仅应通过引用传递变量

    我已经查看了很多类似的问题 但关于我的代码 我没有得到它 错误 Strict Standards Only variables should be passed by reference in wordpress wp includes c
  • html iframe 中的字符错误

    对不起我的英语我说西班牙语 我正在尝试显示多个php and mysql将在 iframe 内显示的注册 问题是 iframe 向我显示特殊字符的错误 例如 重音符号 感叹号等 D ndecuestamenosyseconsumem s 这
  • Google 站点地图日期格式

    我需要 php 中站点地图的日期格式 我怎样才能做到这一点 这个输出对吗
  • PHP 从表行中检索数据并将其存储到变量

    我想这些问题已经说明了一切 我的查询结果会生成与条件匹配的行 我想从每个表列中获取每个数据并将其放入一个变量中 getinfo select user firstname user middlename user lastname from
  • PHP 5 的 HTML 表单库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个QuickForm替代品 QF 存在性能问题 例如组合框中的许多选项 我还想要一些更面向对象的东西 比如 Zend Form
  • 使用 Doctrine2 时的多重歧视级别

    我正在使用 Doctrine2 来管理我的模型 如下 有一个抽象概念Content与复合模式Gallery 也是一个抽象概念Media从中Video and Image继承 我的选择是添加鉴别器Content and Media表以便区分G
  • 如何获取每个类别(例如 WooCommerce 后端)的产品数量?

    我正在建立一个新网站 我对 Woocommerce 非常满意 我只需要一个快速技巧来获取每个类别中的产品数量 我已经调出了每个产品的类别 但无法弄清楚如何从该类别中获取产品数量 我有一个适合我的产品的列表样式 实际上是活动网站的活动 查看图
  • 如何删除空 html 标签(其中包含空格和/或其 html 代码)

    需要 preg replace 的正则表达式 这个问题没有在 另一个问题 中得到回答 因为并非我要删除的所有标签都不为空 我不仅要从 HTML 结构中删除空标签 还要删除包含换行符以及空格和 或其 html 代码的标签 可能的代码是 删除匹
  • WordPress 标头位置重定向

    WordPress 遇到问题 我想将页面重定向到文件夹 php adminpage php 内的特定 php 文件 SESSION变量等于 1 假设会话变量为 1 但浏览器返回 Not Found 有什么办法让它发挥作用吗 更新 已解决 使
  • 解决多个 jQuery 文件之间的冲突

    我的项目中有多个 jquery 文件 我正在使用jquery1 4 2使用facebox 但我也需要原型和scriptacolous脚本 我用过 jQuery noconflict 在我的代码中 但它不起作用 这是网址http mlep c
  • 过滤两个类别的产品集合 Magento 1.7

    我想要获取包含 A 类或 B 类产品的产品集合 我已经能够使用以下 php 代码成功获取这些产品 collection Mage getModel catalog product gt getCollection gt joinField
  • AngularJS + Laravel 5 身份验证

    在使用 AngularJS 构建 SPA 时 我想在 AngularJS 网站中实现用户身份验证 但是 我不知道从哪里开始以及最佳实践是什么 基本上我有一个确定可以担任一个或多个角色 我寻找了一些例子 这样我就可以对如何正确处理这个问题有一
  • PHP日期时间“下周星期三”给我星期一

    我正在尝试使用以下方法获取下周星期三的日期new DateTime next week wednesday 然而 它返回2016 12 19 00 00 00 000000今天是星期一 为什么会这样呢 如何得到正确的结果 我尝试在在线 PH
  • PHP - 从图像创建一张图像

    我有 n 张图像 想用 php 代码创建一张 我使用 imagecopymerge 但无法成功 请举一些例子 Code numberOfImages 3 x 940 y 420 background imagecreatetruecolor
  • Mink 不适用于 behat 3.0.12

    我安装了 Behat Mink 和其他一些相关的软件包 这是我的composer json 文件 require behat behat 3 0 6 behat symfony2 extension dev master behat min

随机推荐

  • 如何在 Angular Reactive 表单中根据条件以动态方式显示/隐藏字段

    我的场景是我有 3 个用户 1 admin将有 3 个字段电子邮件 名字 姓氏 2 雇员将有 4 个字段电子邮件 名字 姓氏 联系人 3 前台将有 5 个字段电子邮件 名字 姓氏 航空公司详细信息 供应商 人名 堆栈闪电战链接 https
  • 是否可以使用 UINavigationController 但隐藏其导航栏(用自定义工具栏替换它)和返回按钮

    我希望使用 UINavigationController 在 2 个 UIViewController 之间切换 AUIViewController BUIViewController与UIView AView BView相关 AView
  • 如何追加到 Swift 字典中的值数组

    假设我有一个字典 它接受字符串作为键和数组作为值 var d String Int d k Int 现在我想append 到下面的数组 k 我怎么做 Int d k append 1 error d k as Int append 1 er
  • 如何循环遍历列表并删除 groovy 中的项目?

    我试图弄清楚如何从循环内的 groovy 列表中删除项目 static main args def list1 1 2 3 4 for num in list1 if num 2 list1 remove num println list1
  • 小型开发团队的 Git 分支策略 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们有一个网络应用程序 几乎每天都会更新和发布 我们使用 git 作为我们的版本控制系统 我们当前的分支策略非常简单且不完善 我们有一个主分支
  • 扩大 x 轴上刻度线之间的间距

    我想扩大 R 中 x 轴刻度线之间的间距 我在 x 轴上有年份c 2005 2012 y 轴上每年一个值 说 A lt c 5 4 6 7 3 8 4 2 B lt c 2005 2012 plot B A type l 我现在需要扩大每个
  • 对象Vba读取项目

    我无法读取电影对象 我不知道为什么 我试图将 JSOn API 返回到 Excel 中的工作表 但我无法读取电影对象 Sub getData Dim Movie As Object Dim R As Object Dim scriptCon
  • 检查 datagridview 单元格是否为空或为空[重复]

    这个问题在这里已经有答案了 我必须更改单元格的背景颜色 当它们的值为字符串或空时 这是我编写的代码 与此处的其他代码类似 for int rowIndex 0 rowIndex lt dataGridView1 RowCount rowIn
  • 如何从Python字符串中提取国家/地区

    我有一些文本 其中可能包含也可能不包含国家 地区名称 例如 尼日利亚 Hotspot Network LTD 农村电话可行性研究 这就是我从中提取国家 地区名称的方法 在我的第一次尝试中 findcountry Nigeria Hotspo
  • kubernetes POD IP什么时候会改变?

    我正在尝试将一个整体应用程序移植到 k8s pod 理论上 Pod 被认为是短暂的 建议使用服务概念来提供静态 IP 但到目前为止 在我的测试中 我还没有看到 POD IP 被更改 那么现在的问题是 k8s 什么时候会为我的 POD 分配一
  • 如何在 ubuntu 20 中安装旧版本的 gcc -3 或 gcc-4

    我正在尝试安装旧版本的 gcc 4enter code here对于我的ubuntu创建构建目录 mkdir gcc build cd gcc build 下载源文件 wgethttp www netgull com gcc release
  • 使用 Google 翻译翻译整个 Google 表格

    我有一张用日语写的 Google 表格 我需要将其转换成英文 我知道我们可以使用googletranslate
  • SSIS 与 DTS 性能

    这么晚了才这么做似乎很疯狂 但是 我正在使用 Rocket Software UniVerse 源和 SQL 目标重建一些 ETL 基础设施 旧的目标平台是 Windows Server 2003 上的 SQL 2000 新平台是 Wind
  • 如何检查一个点是否在给定半径内?

    我有以下代码 需要很长时间才能执行 pandas 数据框df and df plants非常小 小于 1Mb 我想知道是否有任何方法可以优化这段代码 import pandas as pd import geopy distance imp
  • 如何在 Ruby 中获取从位置 N 到最后一个字符的子字符串?

    我想从字符串中获取从位置 N 到字符串末尾的子字符串 在 Ruby 中如何做到这一点 只需将字符串切片即可 string N 1
  • 简单版jQuery live函数

    是否有可能在任何地方获得一个纯 Javascript 函数用于事件处理程序 其功能与 jQuery 类似live 我需要能够将事件附加到尚未创建的对象 但由于依赖于 jQuery 核心 jquery livequery 和 jquery e
  • 如何使用Python和Pandas在时间翻转时添加24小时

    我必须分析一些日志 并基于此 我必须计算一些东西 但我坚持了一件事 在这里 我尝试以简单的形式重新创建我的问题 假设我有以下日志 堆栈溢出 txt file 23 58 03 458 23 58 13 446 23 58 23 447 23
  • Visual Studio 网站中的项目设置实际存储在哪里?

    在 VS2010 中使用网站 而不是 Web 应用程序 因此没有 csproj 文件 右键单击解决方案资源管理器中的 站点 节点并选择 属性页 会弹出一个对话框 其中包含 引用 生成 辅助功能 启动选项 MSBuild 选项 和 Silve
  • 下载 VSTS 附件

    有人知道如何使用 C 库检索附件 ID 并从 VSTS 下载 WorkItem 附件吗 我已经审查了附件样本 https github com Microsoft vsts dotnet samples blob master Client
  • Symfony ArrayCollection 与 PersistentCollection

    据我了解 当您通过存储库查询数据库时 您会得到 PersistentCollection 而当您使用实体时 您会得到 ArrayCollection 因此 考虑到我的用户实体有一对多的自引用关系 在我的用户实体中 我有一个 setChild