【问题标题】:Cakephp, Retrieve Data for HABTM Models using findCakephp,使用 find 检索 HABTM 模型的数据
【发布时间】:2011-01-29 20:15:04
【问题描述】:

我是 cakephp 新手,我正在尝试完成一些应该相对容易的事情。 我有 2 个模型项目和类别通过 HABTM 关系绑定。

我正在尝试执行以下查询 -> 查找属于某个类别的所有项目

$projects = $this->Project->find('all', array('conditions' => array('Category.slug' => $category)));

但是,当我这样做时,它会产生一个 SQL 错误:

SQL Error: 1054: Unknown column 'Category.slug' in 'where clause' 

我做错了什么?

【问题讨论】:

标签: php cakephp has-and-belongs-to-many


【解决方案1】:

据我所知,你可以像这样得到你想要的:

/*in Project Controller file*/

$categorys = $this->Project->Category->find('all', array('conditions' => array('Category.slug' => $category)));

如果正确设置你的HABTM关系,你可能会得到如下信息:

Array
(  
    [Category] => Array
    (
        [id] => xxx
        [name] => hello there
        ...
    )

    [Project] => Array
    (
        [0] => Array
            (
                [id] => 123
                [name] => Breakfast
            )
       [1] => Array
            (
                [id] => 124
                [name] => Dessert
            )
       [2] => Array
            (
                [id] => 125
                [name] => Heart Disease
            )
    )
)

这正是你想要的,不是吗?请参阅食谱中的 work with HABTM in cakephp

【讨论】:

  • 如果您在我的帖子中看到我想查找某个类别下的所有项目。您的代码似乎只处理类别,并且只能在类别控制器中工作(据我所知)。我希望在 Projects Controller 中检索数据,更详细地说,是所有属于特定类别的项目。例如,我的网址将是:sitename/projects/view/category-slug.
  • @ion,你可以使用 "$this->Project->Category->find(...);"要做到这一点,这实际上不是问题。请参阅我的更新。
  • 我试过这样做,但它没有返回任何项目。它找到了类别,但没有找到项目......我很确定我已经正确设置了 HABTM 关系。 mvc 文件由 cake bake 生成,数据库按照 cake 建议的方式构建:项目、类别、projects_categories 我不明白我在这里缺少什么。如果您愿意(此处或其他地方),我可以粘贴文件中的代码。
  • 你是对的!!!非常感谢。似乎我在模型文件中进行试验时混淆了外键和关联外键。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-09
  • 1970-01-01
相关资源
最近更新 更多