Phalcon对数据进行排序

时间:2017-02-28 03:13:28

标签: php relationship phalcon

我想使用模型来查询数据,所以我定义了这样的模型关系:

在分类

    $this->hasManyToMany(
        "id",
        "App\\Models\\CategoriesContents",
        "category_id",
        "content_id",
        "App\\Models\\Contents",
        "id",
        ["alias" => "contents"]
    );

在CategoriesContents

    $this->belongsTo(
        "category_id",
        "App\\Models\\Categories",
        "id",
        ["alias" => "category"]
    );

    $this->belongsTo(
        "content_id",
        "App\\Models\\Contents",
        "id",
        ["alias" => "content"]
    );

在目录

    $this->hasManyToMany(
        "id",
        "App\\Models\\CategoriesContents",
        "content_id",
        "category_id",
        "App\\Models\\Categories",
        "id",
        ["alias" => "categories"]
    );

我必须按名称排序,内容表中的名称,我在类别表中有一个条件。

有没有人知道如何使用默认的whereorder by子句查询关系?

2 个答案:

答案 0 :(得分:1)

以下是与自定义参数关系的完整示例:

$(shell /usr/local/bin/wx-config --cxxflags)

the documentation 还有更多方法。

您与订购的第一个关系和where子句如下所示:

Project settings->Linker->Linker Options

答案 1 :(得分:0)

我有解决方案,但我不认为这是最好的方法 我在内容模型中添加了这个功能

public function find_extended($paramsMain, $paramsRelated, $limit=30, $offset=10)
{
    //Define output
    $outputs        = [];
    $index = 0;
    $contents = self::find($paramsMain);
    foreach($contents as $content)
    {
        $contentData = $content->toArray();
        $categories = $content->getCategories($paramsRelated)->toArray(); // use above parameters to search and sort as you wish
        if (!empty($categories)) {
            $contentData["categories"] = $categories;

            if ($index >= ($limit+$offset)) {
                return $outputs;
            }

            if ($index >= $offset) {
                $outputs[] = $contentData;
            }
            $index++;


        }

    }
    return $outputs;
}