2014-01-16 2 views
1

Теперь у меня нет подтверждения. У меня есть таблица Model/Tag и tag.cakephp сохранить и вставить только другую таблицу, без ассоциации с другой моделью

Контроллер/TagController

<?php 
App::uses('AppController', 'Controller'); 
/*App::uses('Article', 'Model'); 
App::uses('Link', 'Model'); 
App::uses('User', 'Model');*/ 
// with some model , sql is extending so I fell it commented out is better. 
/** 
* Tags Controller 
* 
* @property Tag $Tag 
* @property PaginatorComponent $Paginator 
*/ 
class TagsController extends AppController { 
    public $uses = array(//'Tag','Article','Link','User' 
      ); 

    $this->Paginator->settings = array(
    'conditions'=> array(
       "Link.LFrom = $id" 
      ), 
    'fields' => array('Link.*'), 

Теперь торт запустить этот SQL

Link ВЫБОР. * FROM db0tagplus. tag AS Tag WHERE Link. LFrom = 2152 LIMIT 20

Отношение стола очень сложное, поэтому я не могу использовать ассоциацию.

Как сгенерировать этот sql?

SELECT `Link`.* FROM `Link` WHERE `Link`.`LFrom` = 2152 LIMIT 20 

Я думаю, если бы я мог разгрузить модель и таблицу «Тег». Все будет в порядке. Я не могу решить эту проблему с помощью unbind. (Bind is asssosiation matter).

App::import и app::use загружает заказ модели, как разгрузить указанную модель?

решаемые как этот

$this->loadModel('Article'); 

    $this->Paginator->settings = array(
     'conditions'=> array(
        "Link.LTo = Article.ID" 
       ), 
     'fields' => array('Link.*','taglink.*','Article.*' 
      ), 
     'joins' 
     => array(
     array(
        'table' => 'Link', 
        'type' => 'INNER', 
        'conditions' => array(
      array("$id = Link.LFrom") 
      ) 
       ), 
     array(
        'table' => 'Link', 
        'alias' => 'taglink', 
        'type' => 'INNER', 
        'conditions' => array(
      array("Link.ID = taglink.LTo"), 
      array("$trikeyID = taglink.LFrom") 
      ) 
       ), 
     ) 
    ); 
    debug($this->Paginator->paginate('Article')); 
    $this->set('results',$this->Paginator->paginate('Link')); 
+0

В чем вопрос? – Anubhav

+0

Я добавил, Я хочу этот sql. –

+0

использование рекурсивный в поиске запрос – Anubhav

ответ

0

Используя ниже код, чтобы сделать выше запроса:

App::import('model','Link'); 
    $Link = new Link(); 
    $Link->find('all',array('conditions'=>array('LFrom'=>2152), 
          'limit'=>20, 
          'recursive'=>-1 
      )); 

Вы должны использовать ниже код для удаления существующего связывания

// Let's remove the hasMany... 
    $this->Leader->unbindModel(
     array('hasMany' => array('ModelName')) 
    ); 

Для справки : http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#creating-and-destroying-associations-on-the-fly

+0

спасибо. оно работает. –