-1
我有點困惑,爲什麼這不起作用。Symfony - 加入查詢生成器
我有兩個實體,一個叫做user的實體和一個叫shed的實體。 1個用戶可以有多個棚屋,1個棚屋可以屬於1個用戶。
它們與多對一
class User
{
/**
* @var boolean
*
* @ORM\Column(columnDefinition="TINYINT(1) NOT NULL")
*/
protected $active = true;
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Shed", mappedBy="user")
*/
protected $shed;
}
class Shed
{
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\User", inversedBy="shed")
* @ORM\JoinColumn(name="user", referencedColumnName="id", onDelete="CASCADE")
*
* @var User
*/
protected $user;
/**
* @var boolean
*
* @ORM\Column(columnDefinition="TINYINT(1) NOT NULL")
*/
protected $published = false;
}
連接我想要實現的是,我查詢從已公佈的活躍用戶最新的棚3。
以我ShedRepository我有以下方法:
class ShedRepository
{
public function getNewestSheds()
{
$query = $this->createQueryBuilder('s')
->join('AppBundle:User', 'u')
->andWhere('u.active = 1')
->andWhere('s.published = 1')
->orderBy('s.createdAt', 'DESC')
->setMaxResults(3)
->getQuery();
return $query->getResult();
}
}
當shed.published屬性爲0棚屋未示出。如果棚屋已經發布但用戶不活躍,棚屋也會顯示,但不應該。 任何人都可以幫助我嗎?
那不是真的, 您可以使用columnDefinitions來指定列。 和attribut的默認值設置爲false :) 儘管如此,您的更改並不能解決我的問題:( – Sharpy35
嘗試在條件中使用'TRUE'而不是'1',例如:' - >和WHERE ('u.active = TRUE')' – Miro
試過了,沒有改變結果我不知道最新錯誤,已發佈的約束正在工作,但活動沒有:( – Sharpy35