簡體   English   中英

在Paris ORM中創建查詢

[英]Creating queries in Paris ORM

我有一些食譜,每個食譜都包含類別。 這是我的模型:

class Recipe extends \Model {
    public static $_table = "recipe";

    public function categories() {
        return $this->has_many_through('Category');
    }
}

class Category extends \Model {
    public static $_table = "category";

    public function categories() {
        return $this->has_many_through('Recipe');
    }
}

與該表相關的兩個:

class CategoryRecipe extends \Model {
    public static $_table = "category_recipe";
}

現在,我需要創建一個查詢來獲取一個/多個類別下的所有食譜。 如何做到這一點? 我想避免做這樣的事情:

$results = $app['paris']->getModel('CategoryRecipe')
                        ->where_in("category_id",$selected_categories)
                        ->find_many();

foreach($results as $result) {
    $recipe = $app['paris']->getModel('Recipe')
                           ->where('id',$result->recipe_id)
                           ->find_one();
    var_dump($receta->name);
}

創建過濾器? 模型內部的功能? 不可能使它更優雅嗎?

這幾乎就是我的方法,但是您可以采用一種方式進行優化。 將關系函數添加到鏈接/多對多表中。 然后,您只需執行以下操作即可:

foreach($results as $result) {
    $recipe = $result->recipe()->find_one();
    var_dump($recipe)
}

因此,您的CategoryRecipe模型可能類似於:

class CategoryRecipe extends \Model {
    public static $_table = "category_recipe";

    public function recipe() {
        $this->belongs_to('Recipe', 'recipe_id');
    }

    public function category() {
        $this->belongs_to('Category', 'category_id');
    }
}

我沒有測試過這段代碼,但是我認為應該是您想要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM