【问题标题】:cakephp 1.3 belongsto ambiguity 1052 issuecakephp 1.3 属于歧义 1052 问题
【发布时间】:2014-09-18 21:18:52
【问题描述】:

我正在将大型代码库从 cake1.2 迁移到最新的 cake1.3 - 一切进展顺利,直到我遇到其中一个模型的问题以及如何解决 find('all) 正在生成 SQL 请求。

find('all') 请求在 cmets 类控制器中,请求完整的 3 条评论记录。每条评论 SQL 记录都有一个anger_id 和一个author_id 外文,下面的存根来自cmets 模型。

class Comment extends AppModel {
 var $name = 'Comment';
 var $belongsTo = array(
 Angler' => array( 'className' => 'Angler' ),
 Author' => array( 'className' => 'Angler' ),
 );
}

在众多其他领域中,垂钓者记录有一个称为“最喜欢的诱饵”的领域。作者和钓鱼者都参考钓鱼者记录。评论 SQL 记录有一个 author_id 和一个 Angler_id 字段。这在 1.2 代码中工作得非常好,但由于某种原因,1.3 正在生成以下 SQL 请求,其中“最喜欢的诱饵”字段(只有那个)不明确,我得到一个 1052 错误代码。请注意,没有其他垂钓者领域被抱怨为模棱两可。

查询:SELECT Comment.id, Comment.catch_id, Comment.angler_id, Comment.text, Comment.@98765433@4, @98765433@4, author_idCommentprivateAngleridAnglerusernameAnglerpasswordAngleremailAngleractive, Angler.autologin_key, Angler.role, Angler.first_name, Angler.last_name, Angler.@987654355.@, Angler,@987654355. AnglerstateAnglerzipAnglerphoneAnglerboatfavorite lureAnglercreatedAnglerip,Angler.aoty_rank,Angler.aoty_points,Angler.aoty_events,Author.id,Author.username,username,@987654381. AuthoremailAuthoractiveAuthorautologin_keyAuthorroleAuthorfirst_nameAuthorlast_nameAuthor.address, Author.city, Author.@9876544 00@,Author.zipAuthor.phoneAuthor.boatAuthor.createdAuthor.@987644411@2@987644411@987644411 ,@ 987654413。aoty_pointsAuthor 987654416 @ Comment leve join join anglers AS Angler ON(angler_id 987654423 Angler 987654424 id ) 左连接anglers AS Author ON (Comment.author_id = Author.id) 其中Comment.private = 0 ORDER BY datetimeDESC.

作者和钓鱼者都有相同的字段,但由于某些原因,“最喜欢的诱饵”字段出现了问题。非常感谢任何有关解决此问题的建议。

这是执行查找的代码和运行良好的旧代码。

// OLD CODE FINDALL
// $comments = $this->Comment->findAll(array('Comment.private' => 0), null, 'Comment.datetime DESC', $count); 
        // 1.3 MOD
        $params = array(
        'conditions' => array('Comment.private' => 0),  //  array
        'fields' => null,           //  array
        'order' => 'Comment.datetime DESC',             //  array or string
        'limit' => $count,      //  int
    //  'page' => ,             // int
    //  'recursive' => 0        // int
        );  

$comments = $this->Comment->find('all', $params);

【问题讨论】:

    标签: cakephp-1.3


    【解决方案1】:

    好的,所以我想通了。显然,在“最喜欢的诱饵”之类的词之间有一个空格的 DB 字段是禁止的——它在 cakePHP 1.2 中运行良好,但 1.3 存在问题。将其更改为“favorite_lure”可以解决所有问题。

    它甚至在http://book.cakephp.org/1.3/en/The-Manual/Basic-Principles-of-CakePHP/CakePHP-Conventions.html 上这么说 - “带有两个或多个单词的字段名称带有下划线,例如,first_name。”

    当然,CakePHP 没有任何错误或警告表明该字段的命名约定是问题 - GRRRRRRR。

    【讨论】:

      猜你喜欢
      • 2011-05-18
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 1970-01-01
      • 2012-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多