Я бы использовал поле в запросе, но я получаю эту ошибку: [Semantical Error] строка 0, col 78 рядом с 'resource_id =': Ошибка: Class Dt \ TagBundle \ Entity \ Tagging имеет ни одно из полей или объединение им не resource_idОшибка Entity Entity Error Doctrine
Это моя сущность Tagging:
<?php
namespace Dt\TagBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\Mapping\UniqueConstraint;
use FPN\TagBundle\Entity\Tagging as BaseTagging;
/**
* Dt\TagBundle\Entity\Tagging
*
* @ORM\Table(uniqueConstraints={@UniqueConstraint(name="tagging_idx", columns={"tag_id", "resource_type", "resource_id"})})
* @ORM\Entity
*/
class Tagging extends BaseTagging
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="Dt\TagBundle\Entity\Tag")
* @ORM\JoinColumn(name="tag_id", referencedColumnName="id")
**/
protected $tag;
}
в таблице на моей БД: Пометка (идентификатор, tag_id, resource_type, resource_id) где tag_id соответствуют по идентификатору таблицы: Tag (id, name) и resource_id соответствуют в таблице User User (идентификатор, имя, фамилия, ...)
Это мой поисковый запрос:
$query = $em->createQueryBuilder()
->select('uu')
->from('DtEcBundle:User', 'uu')
->innerJoin("DtTagBundle:Tag","tg", "WITH", "tg.id = tig.tag")
->innerJoin("DtTagBundle:Tagging","tig", "WITH", "tig.resource_id = uu.id")
->innerJoin("DtTagBundle:Tag","tg", "WITH", "tg.id = tig.tag")
->where("uu.surname LIKE :search OR uu.name LIKE :search OR uu.profession LIKE :search OR tg.name LIKE :search")
->setParameter("search",$search.'%')
->getQuery();
Как я могу сделать, чтобы определить resource_id ??? Спасибо
Спасибо, сейчас работа !!!! Почему resourceId, а не resource_id ?? Вы можете объяснить, пожалуйста? @Carlos Granados –
Я объяснил это в ответе: в запросах доктрины вам нужно использовать имя полей, а не имя столбцов базы данных, где они сохраняются –