2014-01-16 49 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

谢谢。有用。 –

相关问题