php对象里面添加元素,php – Doctrine:我如何向关系中添加元素

我认为我的问题不明确,但我试着在这里说明我的观点.假设我有一个多对多的自我引用关系,用户可以成为一名教师(比如你在SO发布答案),教师也可以是学生(你可以回答问题,但也可以提问).

namespace Entities;

/** @Entity @Table(name="users")) */

class User {

/**

* @Id @Column(type="integer")

* @GeneratedValue(strategy="AUTO")

*/

private $id;

/**

* @Column(type="string", length="30")

*/

private $name;

/**

* @ManyToMany(targetEntity="User", inversedBy="teachers")

* @JoinTable(name="Teachers_Students",

* joinColumns={@JoinColumn(name="teacher", referencedColumnName="id")},

* inverseJoinColumns={@JoinColumn(name="student", referencedColumnName="id")}

* )

*/

private $students;

/**

* @ManyToMany(targetEntity="User", mappedBy="students")

*/

private $teachers;

function getName() {

return $this->name;

}

function setName($name) {

$this->name = $name;

}

function getStudents() {

return $this->students;

}

function getTeachers() {

return $this->teachers;

}

}

说我有几个用户

$user1 = new User;

$user1->setName("user 1");

$user2 = new User;

$user2->setName("user 2");

$user3 = new User;

$user3->setName("user 3");

$user4 = new User;

$user3->setName("user 4");

我喜欢在他们之间设置师生关系,我正在阅读doctrine reference,看到你可以使用Collections :: add()将元素添加到集合中

// user1 is a teacher to user2 & 3

$user1->getStudents()->add($user2);

$user1->getStudents()->add($user3);

// user2 is a teacher to user3

$user2->getStudents()->add($user3);

// user4 is a student to user2

// tests if adding something from the inverse side works

$user4->getTeachers()->add($user2);

但这失败了

Fatal error: Call to a member function

add() on a non-object in

D:\ResourceLibrary\Frameworks\Doctrine\tools\sandbox\index.php

on line 70

如何将元素添加到集合或关系中?

解决方法:

请记住,您的集合变量只是常规的ol’类属性.这意味着在初始化它们之前它们将为空.通常要做的是使用Doctrine的ArrayCollection类来实例化它们,这将允许您使用您描述的方法.

试试这个:

public function __construct()

{

$this->students = new \Doctrine\Common\Collections\ArrayCollection();

$this->teachers = new \Doctrine\Common\Collections\ArrayCollection();

}

标签:php,doctrine

来源: https://codeday.me/bug/20190526/1158436.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值