Как правильно добавить отношения один-ко-многим в Doctrine 2?

У меня есть 2 файла (таблицы) в моей организации, и я хочу присоединиться Like стол к Comment Таблица.Я использовал один ко многим, так что можете подключиться Comment.id в Like.comment_id и может получать комментарии лайков с одним выделением. Когда я делаю это и сбрасываю $comment->getLikes() Я получаю объект этого типа

объект (Doctrine \ ORM \ PersistentCollection)

Когда попробуйте сделать что-то подобное $comment->getLikes()->first() получение

Неопределенный индекс: commentId

Так что я не могу получить лайки из базы данных, я делаю что-то не так? И если это возможно, объясните, почему он работает таким образом?
Вот комментарий Entity.

<?php

namespace App\Entity;

use App\Entity;
use Doctrine\ORM\Mapping;

/**
* @Entity
* @Table(name="comments")
*/
class Comment extends Entity
{
/**
*
* /**
* @Column(type="string", length=255)
* @var string
*/
protected $url;/**
* @Column(type="string", length=255)
* @var string
*/
protected $description;

/**
* @Column(name="userId", type="integer")
* @var int
*/
protected $userId;

/**
* @Column(name="lng", type="float")
* @var float
*/
protected $lng;

/**
* @Column(name="lat", type="float")
* @var float
*/
protected $lat;/**
* @Column(type="string", length=255)
* @var string
*/
protected $tags;/**
* @var Like
* @OneToMany(targetEntity="Like", mappedBy="commentId")
**/
protected $likes;/**
* @return string
*/
public function getUrl()
{
return $this->url;
}

/**
* @param string $url
*/
public function setUrl($url)
{
$this->url = $url;
}

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

/**
* @param string $description
*/
public function setDescription($description)
{
$this->description = $description;
}

/**
* @return int
*/
public function getUserId()
{
return $this->userId;
}

/**
* @param int $userId
*/
public function setUserId($userId)
{
$this->userId = $userId;
}

/**
* @return float
*/
public function getLong()
{
return $this->lng;
}

/**
* @param float $lng
*/
public function setLong($lng)
{
$this->lng = $lng;
}

/**
* @return float
*/
public function getLat()
{
return $this->lat;
}

/**
* @param float $lat
*/
public function setLat($lat)
{
$this->lat = $lat;
}

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

/**
* @param string $tags
*/
public function setTags($tags)
{
$this->tags = $tags;
}

/**
* @return array()
*/
public function getLikes()
{
return $this->likes;
}

}

вот как сущность

<?php

namespace App\Entity;

use App\Entity;
use Doctrine\ORM\Mapping;

/**
* @Entity
* @Table(name="like")
*/
class Like extends Entity
{
/**
* @Column(name="commentId", type="integer")
* @var int
*/
protected $commentId;

/**
* @Column(name="userId", type="integer")
* @var int
*/
protected $userId;/**
* @return int
*/
public function getCommentId()
{
return $this->commentId;
}

/**
* @param int $commentId
*/
public function setCommentId($commentId)
{
$this->commentId = $commentId;
}

/**
* @return int
*/
public function getUserId()
{
return $this->userId;
}

/**
* @param int $userId
*/
public function setUserId($userId)
{
$this->userId = $userId;
}

}

Спасибо.

0

Решение

class Comment
{
/**
* @Id
* @Column(type="integer")
* @GeneratedValue
*/
private $id;

/**
* @Column(type="string", length=255)
* @var string
*/
protected $url;/**
* @Column(type="string", length=255)
* @var string
*/
protected $description;

/**
* @Column(name="userId", type="integer")
* @var int
*/
protected $userId;

/**
* @Column(name="lng", type="float")
* @var float
*/
protected $lng;

/**
* @Column(name="lat", type="float")
* @var float
*/
protected $lat;/**
* @Column(type="string", length=255)
* @var string
*/
protected $tags;

/**
* @OneToMany(targetEntity="Like", mappedBy="comment")
*/
protected $likes;

public function __construct()
{
$this->likes = new ArrayCollection();
}/**
* @return string
*/
public function getUrl()
{
return $this->url;
}

/**
* @param string $url
*/
public function setUrl($url)
{
$this->url = $url;
}

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

/**
* @param string $description
*/
public function setDescription($description)
{
$this->description = $description;
}

/**
* @return int
*/
public function getUserId()
{
return $this->userId;
}

/**
* @param int $userId
*/
public function setUserId($userId)
{
$this->userId = $userId;
}

/**
* @return float
*/
public function getLong()
{
return $this->lng;
}

/**
* @param float $lng
*/
public function setLong($lng)
{
$this->lng = $lng;
}

/**
* @return float
*/
public function getLat()
{
return $this->lat;
}

/**
* @param float $lat
*/
public function setLat($lat)
{
$this->lat = $lat;
}

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

/**
* @param string $tags
*/
public function setTags($tags)
{
$this->tags = $tags;
}

/**
* @param Like $like
*/
public function addLike(Like $like)
{
$this->likes->add($like);
$like->setComment($this);
}

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

/**
* @Entity
* @Table(name="likes")
*/
class Like
{
/**
* @Id
* @Column(type="integer")
* @GeneratedValue
*/
private $id;

/**
* @ManyToOne(targetEntity="Comment", inversedBy="likes")
*/
protected $comment;

/**
* @param mixed $comment
*/
public function setComment(Comment $comment)
{
$this->comment = $comment;
}

/**
* @Column(name="userId", type="integer")
*/
protected $userId;

/**
* @return int
*/
public function getUserId()
{
return $this->userId;
}

/**
* @param int $userId
*/
public function setUserId($userId)
{
$this->userId = $userId;
}

}

К вашему сведению: изменить как лайки или другие, потому что ключевое слово mysql LIKE

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]