CakePHP 2.x вмещаемый + нумерация страниц для вложенной модели
У меня есть проблема с нумерацией вложенных моделей с использованием содержимого в Cake...
У меня есть три модели: Категория, CompanyCategory, Company и там ассоциация такая
Category hasMany CompanyCategory
CompanyCategory belongsTo Category
CompanyCategory belongsTo Company
Company hasMany CompanyCategory
Я получаю данные с помощью содержать, как показано ниже:
$options = [
'conditions' => ['Category.slug' => $slug],
'contain' => [
'CompanyCategory.Company.CompanyAddress'
]
];
return $this->find('first', $options);
Все работает должным образом, пока я не хотел разбивать вложенную модель - Company. Я использую CategoriesController с методом show, который отображает представление с выбранной категорией и ассоциированными компаниями (Company hasMany Categories и Category hasMany Companies).
Я пробовал что-то вроде этого:
$this->Paginator->settings = [
'limit' => 1,
'order' => [
'id' => 'asc'
],
'contain' => array('CompanyCategory.Company')
];
$data = $this->Paginator->paginate('Category.CompanyCategory.Company', array('Category.slug LIKE' => $slug));
$this->set('category', $data);
Но это не сработало для меня:(
Любые предложения / помощь?
2 ответа
Если вы определите, что Category имеет отношение hasAndBelongsToMany, это будет легко для вас. Таким образом, вы создали новую модель под названием CompanyCategory, я предполагаю, что есть причина..
Вы можете попробовать это
$this->Category->bindModel(
array(
'hasAndBelongsToMany' => array(
'Company'
)
)
);
$this->Paginator->settings = array(
'conditions' => array(
'Category.slug' => $slug
),
'limit' => 1,
'order' => array(
'id' => 'asc'
),
'contain' => array(
'Company'
)
);
Я предполагаю, что ваше имя таблицы отношений categorys_companies
.... Если нет, то вам нужно использовать другой подход
Finnaly я решаю свою проблему, используя
$this->Paginator->settings = array(
'limit' => 2,
);
$this->Paginator->paginate('Category.CompanyCategory.Company');
Я забыл написать, что я использую метод из CategoriesController, а не Companies.
Но теперь другая проблема заблокировала меня... Я использую TranslateBehaviour, и данные, которые я получаю, не имеют переводов...
Любая идея? Я много гуглил, но не смог найти удовлетворительного решения.