我想问问有没有简单的方法来获取具有第二关系条件的数据。
在我的控制器中,我得到了每个类别实体。
每个类别都有很多产品,因此有一个“ OneToMany”关系。 接下来,每个产品都有一个作者,并且关系为“ ManyToOne”。
现在,我想获取包含有效产品和有效作者产品的每个类别。
类别一对多产品 产品ManyToOne作者 产品具有“活动”字段 作者的字段为“活动”
我在商品类别实体中获取产品的方法。
<ResourceDictionary>
<Style TargetType="CalendarItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="CalendarItem">
<Grid x:Name="PART_Root">
<Grid
Name="PART_DAYS"
Visibility="Visible">
<Label
Grid.Row="0"
Grid.Column="0"
Content="{Binding DaysOfWeekNames[0]}"
Style="{StaticResource BaseStyle}" />
<Label
Grid.Row="0"
Grid.Column="1"
Content="{Binding DaysOfWeekNames[1]}"
Style="{StaticResource BaseStyle}" />
<Label
Grid.Row="0"
Grid.Column="2"
Content="{Binding DaysOfWeekNames[2]}"
Style="{StaticResource BaseStyle}" />
<Label
Grid.Row="0"
Grid.Column="3"
Content="{Binding DaysOfWeekNames[3]}"
Style="{StaticResource BaseStyle}" />
<Label
Grid.Row="0"
Grid.Column="4"
Content="{Binding DaysOfWeekNames[4]}"
Style="{StaticResource BaseStyle}" />
<Label
Grid.Row="0"
Grid.Column="5"
Content="{Binding DaysOfWeekNames[5]}"
Style="{StaticResource BaseStyle}" />
<Label
Grid.Row="0"
Grid.Column="6"
Content="{Binding DaysOfWeekNames[6]}"
Style="{StaticResource BaseStyle}" />
<CalendarDayButton
Grid.Row="1"
Grid.Column="0"
Content="{Binding Days[0]}"
Style="{DynamicResource CalendarDayButtonStyle}" />
<CalendarDayButton
Grid.Row="1"
Grid.Column="1"
Content="{Binding Days[1]}"
Style="{DynamicResource CalendarDayButtonStyle}" />
<CalendarDayButton
Grid.Row="1"
Grid.Column="2"
Content="{Binding Days[2]}"
Style="{DynamicResource CalendarDayButtonStyle}" />
<CalendarDayButton
Grid.Row="1"
Grid.Column="3"
Content="{Binding Days[3]}"
Style="{DynamicResource CalendarDayButtonStyle}" />
<CalendarDayButton
Grid.Row="1"
Grid.Column="4"
Content="{Binding Days[4]}"
Style="{DynamicResource CalendarDayButtonStyle}" />
<CalendarDayButton
Grid.Row="1"
Grid.Column="5"
Content="{Binding Days[5]}"
Style="{DynamicResource CalendarDayButtonStyle}" />
</Grid>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
答案 0 :(得分:0)
当您致电getProducts()
时,Doctrine将从数据库中获取所有条目并选择符合您条件的产品。虽然目前可以使用,但最好使用数据库(MySQL?)选择正确的条目。
因此,请改用QueryBuilder。并且由于您是Symfony,所以可以在Repository中创建这些方法。
我们不是在这里编写您的代码,而是要给您一个想法,它可能是这样的:
CategoryRepository.php
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\ORM\Query\Expr\Join;
class CategoryRepository extends ServiceEntityRepository
{
public function __construct(RegistryInterface $registry)
{
parent::__construct($registry, Category::class);
}
public function findActiveCategories()
{
$qb = $this->createQueryBuilder('Category')
->innerJoin(
'AppBundle:Product',
'Product',
Join::WITH,
'Category.id = Product.category'
)
->where('Product.isActive = 1')
;
return $qb->getQuery()->getResult();
}
}