Как лучше всего подойти к этому в парижском ORM?
У меня есть набор категорий и набор профилей поставщиков, которые имеют столбец с именем reatured. В настоящее время мой класс выглядит следующим образом:
<?php
namespace {
/**
* Class Category
*/
class Category extends ConfettiModel
{
public static $_table = 'supplier_directory_category';
/**
* Returns only top level categories - they have no parent
*
* @return bool
*/
public static function topLevel()
{
return self::where('parent', 0);
}
public static function marketing()
{
return self::where('marketing', 'Yes');
}
public function getTable() {
return self::$_table;
}
/**
* Is this a top level category - has no parent
*
* @return bool
*/
public function isTopLevel()
{
return ($this->parentId == 0);
}
/**
* Associated DirectoryProfile's
*
* @return ORMWrapper
*/
public function profiles()
{
return $this->has_many_through('DirectoryProfile', 'CategoryDirectoryProfile', 'category', 'supplier');
}
}
Я хотел бы добавить новую функцию, featuredProfiles()
что позволяет мне получить те же результаты, что и profiles()
, но в этом случае я хочу ограничить это поставщиками с featured = 'Yes'
,
Я не совсем уверен, как это сделать.
Я взял трубку, и ответ оказался проще, чем я ожидал:
public function featuredProfiles() {
return $this->profiles()->where('featured', 'Yes');
}
Куда добавляется как часть запроса к объединенной таблице.
Других решений пока нет …