Можно ли использовать bindModel для связывания 3 разных вложенных таблиц в CakePHP - PullRequest
0 голосов
/ 13 мая 2010

У меня есть сегмент, который может иметь много комментариев, и у каждого комментария может быть много тегов. Я могу привязать комментарии к сегментам, используя код, подобный приведенному ниже, который является функцией класса модели сегмента.

function prepareForGettingSegmentsWithComments() {
  $this->bindModel(
   array('hasMany' => array(
     'Comment' => array(
      'className' => 'Comment',
      'foreignKey'    => 'segmentID'

     )
    )
   )
  ); 
 }

Тем не менее, как я могу также связать теги?

1 Ответ

0 голосов
/ 13 мая 2010

Да, в этой ситуации я привязываю теги к комментариям с принадлежностью. Затем отфильтруйте результаты по некоторым условиям запроса.

Дайте мне посмотреть, смогу ли я найти пример фрагмента где-нибудь,

if(isset($this->params['named']['category'])){
  $this->Link->bindModel(
    array('belongsTo' => array(
          'CategoriesLink' => array(
              'className' => 'CategoriesLink',
              'foreignKey' => 'id',
          )
      )),
    array('belongsTo' => array(
          'Category' => array(
              'className' => 'Category',
              'foreignKey' => 'categories_link_id',
          )
      ))
  );

  $data = $this->paginate('Link', array('CategoriesLink.category_id'=>$this->params['named']['category']));
} else {
  $data = $this->paginate('Link', array('Link.status_id'=>'1'));
}

$this->set('links', $data);

Вот как я это сделал, когда пытался разбить мою модель Link на связанные поля. Это было с Cake1.2, хотя, но я думаю, что принцип тот же.

Я бы также порекомендовал установить DebugKit, http://www.ohloh.net/p/cakephp-debugkit, затем возиться со ссылками и условиями, пока не получите запрос, который работает для вас.

Извините, не очень технически;) Я уверен, что кто-то может дать вам более точный ответ.

PS, просто перечитав вопрос, разве у вас не связаны эти Модели уже? Безусловно, подключая их в Моделях через отношения CakePHP, вам не нужно связывать модели, и вы можете просто использовать Containable или unbindModel()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...