2014-01-16 50 views
1

現在我沒有驗證。我有模型/標籤和標籤表。cakephp保存並插入另一個表格,沒有從不同模型的assosiasion

控制器/ 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

SELECT Link。* FROM db0tagplustag AS Tag其中LinkLFrom = 2152 LIMIT 20

表格關係非常複雜,所以我不能使用協調。

如何生成這個sql?

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

我想,如果我可以卸載模型和表'標記'它會好的。 我無法解決它與解除綁定(綁定是asssosiation問題)。

App::importapp::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

謝謝。有用。 –

相關問題