I tried to transform a SQL function into DQL but i always have errors...
I have 3 tables
/**
* #ORM\Entity(repositoryClass=ArticleRepository::class)
*/
class Article
{
/**
* #ORM\Id
* #ORM\GeneratedValue
* #ORM\Column(type="integer")
*/
private $id;
/**
* #ORM\Column(type="string", length=255)
*/
private $title;
/**
* #Gedmo\Slug(fields={"title"})
* #ORM\Column(type="string", length=255, unique=true, nullable=true)
*/
private $slug;
/**
* #ORM\Column(type="boolean", options={"default":"0"})
*/
private $isItalian = false;
/**
* #ORM\Column(type="text")
*/
private $content;
/**
* #ORM\ManyToMany(targetEntity=Contact::class, inversedBy="viewedArticles")
*/
private $contact;
}
class Contact implements UserInterface, JsonSerializable
{
/**
* #ORM\Id
* #ORM\GeneratedValue
* #ORM\Column(type="integer")
*/
protected ?int $id = null;
/**
* #ORM\Column(type="string", length=255, unique=true)
*/
protected ?string $email = null;
/**
* #ORM\ManyToMany(targetEntity=Article::class, mappedBy="contact")
*/
private $viewedArticles;
}
And a many to many table
article_contact (a manyToMany table) with article_id and contact_id
i want to get all articles who are not in the article_contact table (it's all the articles who're not viewed by the contact)
I tried this request in SQL and it works, but it return an array and i need to return an object to use it in Symfony
$conn = $entityManager->getConnection();
$sql = 'SELECT *
FROM article
LEFT JOIN article_contact
ON article.id = article_id
AND contact_id = '.$id.'
WHERE article.is_italian = '.$isItalian.'
AND article_id IS NULL';
$stmt = $conn->prepare($sql);
$result = $stmt->executeQuery();
return $result->fetchAllAssociative();
DQL request :
return $this->createQueryBuilder('a')
->leftJoin('a.contact', 'contact')
->where('a.isItalian = 0')
->andWhere('contact = 1')
->andWhere('contact.viewedArticles IS NULL')
->getQuery()
->getResult()
;
it's the ->andWhere('contact.viewedArticles IS NULL') part who's not working, i have this error
[Semantical Error] line 0, col 113 near 'viewedArticles': Error: Invalid PathExpression. StateFieldPathExpression or SingleValuedAssociationField expected.
The answer is
$qb->select('a')
->from(Article::class,'a')
->leftJoin('a.contact', 'contact', 'WITH', 'contact.id = :id')
->setParameter('id', $contactId)
->andWhere('a.isItalian = :isItalian')
->setParameter('isItalian', $isItalian)
->groupBy('a.id')
->having('COUNT(contact.id) = 0')
;
return $qb->getQuery()->getResult();
Thanks to Will B. !
The application has built in ZF3. I have to entity with ManyToOne relationship using ORM. The issue is when i render through controller and and if fetch data via index it gives okay result but when i assign that to view and trying to render at phtml it throws an error/
/**
* Subscriptions
*
* #ORM\Table(name="subscriptions", indexes={#ORM\Index(name="CUST_ID", columns={"customer_id"}),#ORM\Index(name="SUB_TYPE_ID", columns={"subscription_type_id"})})
* #ORM\Entity
*/
class Subscriptions
{
/**
* #var integer
*
* #ORM\Column(name="id", type="integer", nullable=false)
* #ORM\Id
* #ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* #var \Application\Entity\SubscriptionType
*
* #ORM\ManyToOne(targetEntity="Application\Entity\SubscriptionType")
* #ORM\JoinColumns({
* #ORM\JoinColumn(name="subscription_type_id", referencedColumnName="id")
* })
*/
protected $subscriptionType;
//set
public function setSubscriptionType(\Application\Entity\SubscriptionType $subscriptionType = null)
{
$this->subscriptionType = $subscriptionType;
return $this;
}
//get
public function getSubscriptionType(){
return $this->subscriptionType;
}
//other setter and getter....
}
Another Class
/**
* SubscriptionType
*
* #ORM\Table(name="subscription_type")
* #ORM\Entity
*/
class SubscriptionType
{
/**
* #var integer
*
* #ORM\Column(name="id", type="integer", nullable=false)
* #ORM\Id
* #ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* #var string
*
* #ORM\Column(name="description", type="text", length=65535, nullable=true)
*/
private $description;
/**
* Get id
*enter code here
* #return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set description
*
* #param string $description
*
* #return SubscriptionType
*/
public function setDescription($description)
{
$this->description = $description;
return $this;
}
}
Now at controller i have wrote...
//some initiations
class AdminController extends AbstractActionController
{
//other initiations including __construct....
public function usersubscriptionsAction(){
$this->subscriptions = $this->entityManager->getRepository(Subscriptions::class)->findAll();
/*
foreach($this->subscriptions as $subscription){
//if i am checking with this it gives proper output
echo $subscription->getSubscriptionType()->getDescription();
die();
}
*/
return new ViewModel(
array(
"subscriptions" => $this->subscriptions
)
);
}
}
///i have phtml file
<?php foreach ($subscriptions as $subscription): ?>
//below line throwing an error
<?php echo $subscription->getSubscriptionType()->getDescription(); ?>
<?php endforeach; ?>
when i run it throw an erro message
Call to a member function getDescription() on null
You've got the relation mapping incorrect. Corrected the property annotation below:
/**
* #var \Application\Entity\SubscriptionType
*
* #ORM\ManyToOne(targetEntity="Application\Entity\SubscriptionType")
* #ORM\JoinColumn(name="subscription_type_id", referencedColumnName="id")
*/
protected $subscriptionType;
You had
/**
* #var \Application\Entity\SubscriptionType
*
* #ORM\ManyToOne(targetEntity="Application\Entity\SubscriptionType")
* #ORM\JoinColumns({
* #ORM\JoinColumn(name="subscription_type_id", referencedColumnName="id")
* })
*/
protected $subscriptionType;
The #ORM\JoinColumns is used for when you have a join with multiple columns, please see the docs. Though, the most common usage of JoinColumns is for a JoinTable.
I have no idea for this. I'm a beginner of symfony3.
code
/**
* Set createdAt
* #ORM\PrePersist()
* #param \DateTime $createdAt
*
* #return Book
*/
public function setCreatedAt($createdAt)
{
$this->createdAt = $createdAt;
return $this;
}
/**
* Get createdAt
*
* #return \DateTime
*/
public function getCreatedAt()
{
return $this->createdAt;
}
/**
* Set updateAt
*
* #param \DateTime $updateAt
*
* #return Book
*/
public function setUpdateAt($updateAt)
{
$this->updateAt = $updateAt;
return $this;
}
/**
* Get updateAt
*
* #return \DateTime
*/
public function getUpdateAt()
{
return $this->updateAt;
}
/**
* #ORM\PrePersist()
*/
public function PrePersist() {
if ($this->getCreatedAt() == null) {
$this->setCreatedAt(new \DateTime('now'));
}
$this->setUpdateAt(new \DateTime('now'));
}
/**
* #ORM\PreUpdate()
*/
public function PreUpdate() {
$this->setUpdateAt(new \DateTime('now'));
}
it gives an error report as below :
Error
Could not convert PHP value of type 'Doctrine\ORM\Event\LifecycleEventArgs' to type 'datetime'. Expected one of the following types: null, DateTime
Help me to figure it out.
So i have the following mapping:
Order entity
/**
* Order
*
* #ORM\Table(name="`order`")
* #ORM\Entity
*/
class Order
{
/**
* #var integer
*
* #ORM\Column(type="integer")
* #ORM\Id
* #ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
// ... //
/**
* #ORM\OneToMany(targetEntity="OrderItem", mappedBy="order")
*/
private $items;
// ... //
OrderItem entity
/**
* OrderItem
*
* #ORM\Table(name="order_item")
* #ORM\Entity
*/
class OrderItem
{
/**
* #var integer
*
* #ORM\Column(type="integer")
* #ORM\Id
* #ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
// ... //
/**
* #ORM\ManyToOne(targetEntity="Order", inversedBy="items")
* #ORM\JoinColumn(referencedColumnName="id")
*/
private $order;
// ... //
The problem I experience is when I try to dump $order->getItems() after flushing it remains NULL. Eveything is inserted fine to the database with the correct ids and when I try to get the order in the NEXT request it does contain items in $order->getItems() so no doubt it does work.
But it does not work (giving NULL) with the same request.
Look at the code below:
$manager = $this->getDoctrine()->getManager();
$order = new Order();
$orderItem = new OrderItem();
$orderItem
->setOrder($order)
;
$manager->persist($order);
$manager->persist($orderItem);
dump($order->getItems()); // returns NULL
// but in the next request it will contain items
So how can I get those items within the same request? I need to generate the order and return the items... any idea?
In class OrderItem, maybe.
public setOrder(Order $order)
{
$order->addItem($this);
$this->ordder = $order;
}
I am new to symfony and doctrine. I have 2 entities in doctrine one is Users and other is ActivityLogs here is the classes.
Users.php
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Users
*
* #ORM\Table(name="ms_users")
* #ORM\Entity
*/
class Users
{
/**
* #var integer
*
* #ORM\Column(name="id", type="integer")
* #ORM\Id
* #ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* #var string
*
* #ORM\Column(name="username", type="string", length=50)
*/
private $username;
/**
* #var string
*
* #ORM\Column(name="verification_tokken", type="string", length=100)
*/
private $verificationTokken;
/**
* #var string
*
* #ORM\Column(name="tokken_expiry_time", type="string", length=50)
*/
private $tokkenExpiryTime;
/**
* #var integer
*
* #ORM\Column(name="is_two_way_auth_enabled", type="boolean")
*/
private $isTwoWayAuthEnabled;
/**
* #var string
*
* #ORM\Column(name="verification_pin", type="string", length=50)
*/
private $verificationPin;
/**
* #var string
*
* #ORM\Column(name="slug", type="string", length=250)
*/
private $slug;
/**
* #var string
*
* #ORM\Column(name="date_string", type="string", length=50)
*/
private $dateString;
/**
* #var string
*
* #ORM\Column(name="date_time_string", type="string", length=50)
*/
private $dateTimeString;
/**
* #var integer
*
* #ORM\Column(name="is_active", type="integer")
*/
private $isActive;
/**
* #var integer
*
* #ORM\Column(name="is_deleted", type="integer")
*/
private $isDeleted;
/**
* #var integer
*
* #ORM\Column(name="is_editable", type="integer")
*/
private $isEditable;
/**
* #var string
*
* #ORM\Column(name="last_updated_on", type="string", length=50)
*/
private $lastUpdatedOn;
/**
* #var integer
*
* #ORM\Column(name="school_id", type="integer")
*/
private $schoolId;
/**
* #var integer
*
* #ORM\Column(name="updated_by", type="integer")
*/
private $updatedBy;
/**
* Get id
*
* #return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set username
*
* #param string $username
*
* #return Users
*/
public function setUsername($username)
{
$this->username = $username;
return $this;
}
/**
* Get username
*
* #return string
*/
public function getUsername()
{
return $this->username;
}
/**
* Set verificationTokken
*
* #param string $verificationTokken
*
* #return Users
*/
public function setVerificationTokken($verificationTokken)
{
$this->verificationTokken = $verificationTokken;
return $this;
}
/**
* Get verificationTokken
*
* #return string
*/
public function getVerificationTokken()
{
return $this->verificationTokken;
}
/**
* Set tokkenExpiryTime
*
* #param string $tokkenExpiryTime
*
* #return Users
*/
public function setTokkenExpiryTime($tokkenExpiryTime)
{
$this->tokkenExpiryTime = $tokkenExpiryTime;
return $this;
}
/**
* Get tokkenExpiryTime
*
* #return string
*/
public function getTokkenExpiryTime()
{
return $this->tokkenExpiryTime;
}
/**
* Set isTwoWayAuthEnabled
*
* #param integer $isTwoWayAuthEnabled
*
* #return Users
*/
public function setIsTwoWayAuthEnabled($isTwoWayAuthEnabled)
{
$this->isTwoWayAuthEnabled = $isTwoWayAuthEnabled;
return $this;
}
/**
* Get isTwoWayAuthEnabled
*
* #return integer
*/
public function getIsTwoWayAuthEnabled()
{
return $this->isTwoWayAuthEnabled;
}
/**
* Set verificationPin
*
* #param string $verificationPin
*
* #return Users
*/
public function setVerificationPin($verificationPin)
{
$this->verificationPin = $verificationPin;
return $this;
}
/**
* Get verificationPin
*
* #return string
*/
public function getVerificationPin()
{
return $this->verificationPin;
}
/**
* Set slug
*
* #param string $slug
*
* #return Users
*/
public function setSlug($slug)
{
$this->slug = $slug;
return $this;
}
/**
* Get slug
*
* #return string
*/
public function getSlug()
{
return $this->slug;
}
/**
* Set dateString
*
* #param string $dateString
*
* #return Users
*/
public function setDateString($dateString)
{
$this->dateString = $dateString;
return $this;
}
/**
* Get dateString
*
* #return string
*/
public function getDateString()
{
return $this->dateString;
}
/**
* Set dateTimeString
*
* #param string $dateTimeString
*
* #return Users
*/
public function setDateTimeString($dateTimeString)
{
$this->dateTimeString = $dateTimeString;
return $this;
}
/**
* Get dateTimeString
*
* #return string
*/
public function getDateTimeString()
{
return $this->dateTimeString;
}
/**
* Set isActive
*
* #param integer $isActive
*
* #return Users
*/
public function setIsActive($isActive)
{
$this->isActive = $isActive;
return $this;
}
/**
* Get isActive
*
* #return integer
*/
public function getIsActive()
{
return $this->isActive;
}
/**
* Set isDeleted
*
* #param integer $isDeleted
*
* #return Users
*/
public function setIsDeleted($isDeleted)
{
$this->isDeleted = $isDeleted;
return $this;
}
/**
* Get isDeleted
*
* #return integer
*/
public function getIsDeleted()
{
return $this->isDeleted;
}
/**
* Set isEditable
*
* #param integer $isEditable
*
* #return Users
*/
public function setIsEditable($isEditable)
{
$this->isEditable = $isEditable;
return $this;
}
/**
* Get isEditable
*
* #return integer
*/
public function getIsEditable()
{
return $this->isEditable;
}
/**
* Set lastUpdatedOn
*
* #param string $lastUpdatedOn
*
* #return Users
*/
public function setLastUpdatedOn($lastUpdatedOn)
{
$this->lastUpdatedOn = $lastUpdatedOn;
return $this;
}
/**
* Get lastUpdatedOn
*
* #return string
*/
public function getLastUpdatedOn()
{
return $this->lastUpdatedOn;
}
/**
* Set schoolId
*
* #param integer $schoolId
*
* #return Users
*/
public function setSchoolId($schoolId)
{
$this->schoolId = $schoolId;
return $this;
}
/**
* Get schoolId
*
* #return integer
*/
public function getSchoolId()
{
return $this->schoolId;
}
/**
* Set updatedBy
*
* #param integer $updatedBy
*
* #return Users
*/
public function setUpdatedBy($updatedBy)
{
$this->updatedBy = $updatedBy;
return $this;
}
/**
* Get updatedBy
*
* #return integer
*/
public function getUpdatedBy()
{
return $this->updatedBy;
}
}
AcitivityLogs.php
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* ActivitLogs
*
* #ORM\Table(name="ms_activity_logs")
* #ORM\Entity
*/
class ActivitLogs
{
/**
* #var integer
*
* #ORM\Column(name="id", type="integer")
* #ORM\Id
* #ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* #var integer
*
* #ORM\Column(name="user_id", type="integer")
*
* #ORM\ManyToOne(targetEntity="Users")
* #ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
private $userId;
/**
* #var string
*
* #ORM\Column(name="activity_log", type="text")
*/
private $activityLog;
/**
* #var string
*
* #ORM\Column(name="user_agent", type="string", length=250)
*/
private $userAgent;
/**
* #var string
*
* #ORM\Column(name="os_platform", type="string", length=250)
*/
private $osPlatform;
/**
* #var string
*
* #ORM\Column(name="ip_address", type="string", length=250)
*/
private $ipAddress;
/**
* #var string
*
* #ORM\Column(name="referer", type="text")
*/
private $referer;
/**
* #var string
*
* #ORM\Column(name="date_string", type="string", length=50)
*/
private $dateString;
/**
* #var string
*
* #ORM\Column(name="date_time_string", type="string", length=50)
*/
private $dateTimeString;
/**
* #var integer
*
* #ORM\Column(name="is_active", type="integer")
*/
private $isActive;
/**
* #var integer
*
* #ORM\Column(name="is_deleted", type="integer")
*/
private $isDeleted;
/**
* #var integer
*
* #ORM\Column(name="is_editable", type="integer")
*/
private $isEditable;
/**
* #var string
*
* #ORM\Column(name="last_updated_on", type="string", length=50)
*/
private $lastUpdatedOn;
/**
* #var integer
*
* #ORM\Column(name="school_id", type="integer")
*/
private $schoolId;
/**
* #var integer
*
* #ORM\Column(name="updated_by", type="integer")
*/
private $updatedBy;
/**
* Get id
*
* #return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set userId
*
* #param integer $userId
*
* #return ActivitLogs
*/
public function setUserId($userId)
{
$this->userId = $userId;
return $this;
}
/**
* Get userId
*
* #return integer
*/
public function getUserId()
{
return $this->userId;
}
/**
* Set activityLog
*
* #param string $activityLog
*
* #return ActivitLogs
*/
public function setActivityLog($activityLog)
{
$this->activityLog = $activityLog;
return $this;
}
/**
* Get activityLog
*
* #return string
*/
public function getActivityLog()
{
return $this->activityLog;
}
/**
* Set userAgent
*
* #param string $userAgent
*
* #return ActivitLogs
*/
public function setUserAgent($userAgent)
{
$this->userAgent = $userAgent;
return $this;
}
/**
* Get userAgent
*
* #return string
*/
public function getUserAgent()
{
return $this->userAgent;
}
/**
* Set osPlatform
*
* #param string $osPlatform
*
* #return ActivitLogs
*/
public function setOsPlatform($osPlatform)
{
$this->osPlatform = $osPlatform;
return $this;
}
/**
* Get osPlatform
*
* #return string
*/
public function getOsPlatform()
{
return $this->osPlatform;
}
/**
* Set ipAddress
*
* #param string $ipAddress
*
* #return ActivitLogs
*/
public function setIpAddress($ipAddress)
{
$this->ipAddress = $ipAddress;
return $this;
}
/**
* Get ipAddress
*
* #return string
*/
public function getIpAddress()
{
return $this->ipAddress;
}
/**
* Set referer
*
* #param string $referer
*
* #return ActivitLogs
*/
public function setReferer($referer)
{
$this->referer = $referer;
return $this;
}
/**
* Get referer
*
* #return string
*/
public function getReferer()
{
return $this->referer;
}
/**
* Set dateString
*
* #param string $dateString
*
* #return ActivitLogs
*/
public function setDateString($dateString)
{
$this->dateString = $dateString;
return $this;
}
/**
* Get dateString
*
* #return string
*/
public function getDateString()
{
return $this->dateString;
}
/**
* Set dateTimeString
*
* #param string $dateTimeString
*
* #return ActivitLogs
*/
public function setDateTimeString($dateTimeString)
{
$this->dateTimeString = $dateTimeString;
return $this;
}
/**
* Get dateTimeString
*
* #return string
*/
public function getDateTimeString()
{
return $this->dateTimeString;
}
/**
* Set isActive
*
* #param integer $isActive
*
* #return ActivitLogs
*/
public function setIsActive($isActive)
{
$this->isActive = $isActive;
return $this;
}
/**
* Get isActive
*
* #return integer
*/
public function getIsActive()
{
return $this->isActive;
}
/**
* Set isDeleted
*
* #param integer $isDeleted
*
* #return ActivitLogs
*/
public function setIsDeleted($isDeleted)
{
$this->isDeleted = $isDeleted;
return $this;
}
/**
* Get isDeleted
*
* #return integer
*/
public function getIsDeleted()
{
return $this->isDeleted;
}
/**
* Set isEditable
*
* #param integer $isEditable
*
* #return ActivitLogs
*/
public function setIsEditable($isEditable)
{
$this->isEditable = $isEditable;
return $this;
}
/**
* Get isEditable
*
* #return integer
*/
public function getIsEditable()
{
return $this->isEditable;
}
/**
* Set lastUpdatedOn
*
* #param string $lastUpdatedOn
*
* #return ActivitLogs
*/
public function setLastUpdatedOn($lastUpdatedOn)
{
$this->lastUpdatedOn = $lastUpdatedOn;
return $this;
}
/**
* Get lastUpdatedOn
*
* #return string
*/
public function getLastUpdatedOn()
{
return $this->lastUpdatedOn;
}
/**
* Set schoolId
*
* #param integer $schoolId
*
* #return ActivitLogs
*/
public function setSchoolId($schoolId)
{
$this->schoolId = $schoolId;
return $this;
}
/**
* Get schoolId
*
* #return integer
*/
public function getSchoolId()
{
return $this->schoolId;
}
/**
* Set updatedBy
*
* #param integer $updatedBy
*
* #return ActivitLogs
*/
public function setUpdatedBy($updatedBy)
{
$this->updatedBy = $updatedBy;
return $this;
}
/**
* Get updatedBy
*
* #return integer
*/
public function getUpdatedBy()
{
return $this->updatedBy;
}
}
I have a simple ManyToOne Relationship between these two tables on userId field.
Here is the code with i m trying to add the data in to database with doctrine.
public function checkDatabaseAction(){
$user = new Users();
$user->setDateString(date('Y-m-d'))
->setDateTimeString(date('Y-m-d H:i:s'))
->setIsActive(1)
->setIsDeleted(0)
->setIsEditable(1)
->setIsTwoWayAuthEnabled(0)
->setLastUpdatedOn(date('Y-m-d H:i:s'))
->setSchoolId(1)
->setSlug('abc-123')
->setTokkenExpiryTime(date('Y-m-d'))
->setUpdatedBy(1)
->setUsername('ahmedali5530')
->setVerificationPin('1122')
->setVerificationTokken('hskajdhfkjlh435kh34k5jh435');
$log = new ActivitLogs();
$log->setActivityLog('A log')
->setDateString(date('Y-m-d'))
->setDateTimeString(date('Y-m-d H:i:s'))
->setIpAddress('192.168.1.16')
->setIsActive(1)
->setIsDeleted(0)
->setIsEditable(1)
->setLastUpdatedOn(date('Y-m-d H:i:s'))
->setOsPlatform('Windows 7')
->setReferer('http://localhost/symfony')
->setSchoolId(1)
->setUpdatedBy(1)
->setUserAgent('Chrome')
->setUserId($user);
$em = $this->getDoctrine()->getManager();
$em->persist($user);
$em->persist($log);
$em->flush();
$allocateCourses = $em->getRepository('AppBundle:AllocateCourses')->findBy(array('isActive'=>1));
return $this->render(':main:form.html.php',array(
'data' => $allocateCourses,
));
}
When I execute this code I received the error:-
An exception occurred while executing 'INSERT INTO ms_activity_logs (user_id, activity_log, user_agent, os_platform, ip_address, referer, date_string, date_time_string, is_active, is_deleted, is_editable, last_updated_on, school_id, updated_by) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' with params [{}, "A log", "Chrome", "Windows 7", "192.168.1.16", "http://localhost/symfony", "2015-12-22", "2015-12-22 16:53:55", 1, 0, 1, "2015-12-22 16:53:55", 1, 1]:
Catchable Fatal Error: Object of class AppBundle\Entity\Users could not be converted to string
Any suggestions how to fix this error.
Ok I got the answer.
I added the new private property in ActivityLogs.php and told Doctrine to generate the entity. Doctrine created getter and setters for that property. This fixed my problem.
Here is the code I added:
/**
* #ORM\ManyToOne(targetEntity="Users", inversedBy="ActivityLogs")
* #ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
private $user;