我有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,
所以它不起作用:/
有人可以解释我如何在这个cakePHP中使用数据库我知道有find,findAll等功能,但所有这些都来自控制器级别。 $ this-> Image-> find()等...
我需要比基本的cakePHP食谱更好的教程:/。我愿意接受任何吸烟。 的问候,
答案 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] ...
)
)
)
我希望至少能把你推向正确的方向。快乐的编码!