CakePHP数据库如何工作?

时间:2011-04-15 21:38:04

标签: cakephp cakephp-1.3

我有3个表:用户,图像(user_id的外键),注释(外键:user_id和image_id)

有人可以解释一下,或者给我发链接到好教程如何使用数据库? 我的意思是: 1.我想拍摄所有在评论表中有任何评论的图片。在SQL中:从Images i,Commets c中选择i,其中i.id = c.image_id ???

你能解释一下我如何从一个控制器访问另一个模型? 我在图像控制器中尝试: $ data = $ this->图片 - >查询('从图片i中选择*,评论c,其中i.id = c.image_id'); 在视图中:$ image [' id']但我有错误:未定义索引:id [APP \ views \ images \ commented.ctp,

所以它不起作用:/

  1. 如何删除图片及其所有评论?我使用了Zend,我习惯了它,我不知道如何在cakePHP中做同样的想法:/
  2. 有人可以解释我如何在这个cakePHP中使用数据库我知道有find,findAll等功能,但所有这些都来自控制器级别。 $ this-> Image-> find()等...

    我需要比基本的cakePHP食谱更好的教程:/。我愿意接受任何吸烟。 的问候,

1 个答案:

答案 0 :(得分:2)

您可以通过多种方式之一在控制器中引用模型。两种常见的方法是使用控制器顶部的uses变量:

var $uses = array('User','Image');

或者你可以把它放在你的函数中:

$this->loadModel('Image');
$this->Image->find('all'); ...

此外,如果您有通过foriegn键链接的模型,您甚至可以将其称为:

$this->User->Image->find('all');

一旦你掌握了CakePHP如何构建事物,它就会非常清楚。

因此,对于问题中的sql语句,您可以从用户控制器执行以下操作:

class UsersController extends AppController {
   var $name = 'Users';
   var $uses = array('User','Image','Comments');

   function {my_function_name}() {
       $this->Images->recursive = 1;
       $images = $this->Image->find('all');
   }
}

现在,只要你的relationships在模型中是正确的,递归函数就会构建带有附加所有注释的images数组。

array(
   [Image] => array(
        image data,
        [comments] => array(
            [0] comment data,
            [1] comment data,
            [2] ...
        )
    )
)

我希望至少能把你推向正确的方向。快乐的编码!