[英]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.