2012-05-04 115 views
1

我昨天从cakephp开始,跑在一个问题:从其他控制器的访问控制器

我有一个“ImagesController”和“UsersController”。

ImageView显示图像列表。用户使用用户标识保存在图像表中。

我现在需要将用户标识转换为用户表中的名称。我用佣工试了一下,但没有成功,因为我无法访问$this->User->find($id)

我已经在谷歌搜索,但似乎我命名它错了,所以它没有得到结果。

感谢您的帮助!

回答

2

您正在寻找的是将您的图像模型与您的用户模型相关联。 article in the book真的值得一读!

关联后,您可以直接获取该名称而不调用任何函数。从我的头顶,你会需要的是在你的图像模型补充一点:

public $belongsTo = array('User'); 

然后从您的视图中的用户名应提供以下:

$data_var['Image']['User']['name']; 

哪里$data_var是查看保存图像数据的变量。

+0

$ belongsTo是重点!谢谢!但它不接受我的条件我提出: '公共功能指数(){$ 条件=阵列( '递归'=> -1, '订单'=>数组( 'ID DESC'), 'limit'=> 15, 'page'=> 1, ); pr($ this-> Image-> find('all',$ conditions));' – Moritz

+0

这是因为您的条件数组有缺陷。 '递归'不会进入那里。尝试将它与第一个示例[此处](http://book.cakephp.org/2.0/en/models/retrieving-your-data.html)进行比较,看看它应该是什么样子。 – Oldskool

+0

天啊,非常感谢你:-) – Moritz

1

它看起来像你有两个型号,ImageUser。如果您想要拨打$this->User->find($id),可以将模型添加到cotroller顶部的$uses变量中。

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

例如。

+0

嘿,耶,几乎是我想要的!我怎样才能从它调用函数?像'$ this-> User-> getUserNameById(1);' 还有更好的方法来做到这一点吗? – Moritz

+0

这就是你所说的。或者,您可以设置模型关联,因此调用'$ this-> Image-> find()'也会拉入User数据。这里是关于这方面的文档。 http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html –

+0

嘿,好像不是我想要的样子: '<?php class Image扩展AppModel public $ name ='Image'; 公共$的hasMany =阵列( '用户'=>数组( '的className'=> '用户', '条件'=>数组( 'User.verified'=> '1') ) ); }' 只需返回旧的Image-> find()输出。 – Moritz