在Symfony

时间:2016-09-22 19:02:20

标签: php symfony oop doctrine-orm

我已将Product与其子图像建立了关系。正常的一对多关联。

使用以下代码,我可以在对象中获取子图像:

$product->getImages();

我想通过图像来修改某些内容,我这样做:

foreach ($product->getImages() as $Image) {
            // do something
        }

只有图像有一个名为seq的字段,这是一个代表图像顺序的数字。如何订购与序号相关的对象?

谢谢!

3 个答案:

答案 0 :(得分:3)

您必须为此使用注释@orderBy。请使用类似

的内容
<?php
/** @Entity **/
class Product
{
    /**
     * @OneToMany(targetEntity="Image")
     * @OrderBy({"seq" = "ASC"})
     **/
    private $images;
}

答案 1 :(得分:0)

您可以在Doctrine关系中添加注释(但这会影响您对集合所做的所有访问,并且您无法实现其他排序方法)您可以实现自定义使用条件标准过滤产品实体本身(请参阅一些示例here)。

例如:

app.factory('test', [function(){
    var fac = {};
    fac.users = ['john', 'james', 'jake'];
    return fac;
}]);

app.controller('dashboardCtrl', [
    '$scope',
    'test',
    function($scope, test){
        $scope.testFunction = function(){
            console.log(test.users);
        }
     }
]);

希望这个帮助

对于简单的场景,@ Liju P M发布的解决方案很好

答案 2 :(得分:0)

在symfony 3.4中你应该成功

/**
 * @ORM\OneToMany(targetEntity="Image")
 * @ORM\OrderBy({"seq" = "ASC"})
 **/

并且不要忘记使用陈述

use Doctrine\ORM\Mapping as ORM;