【发布时间】:2014-02-20 19:49:16
【问题描述】:
我用 CakePHP 几个月大。这是我第一次尝试 CakePhp 协会。我假设我几乎遵循了所有说明,但我的模型似乎仍然无法正常工作。
这是简单的“用户”和“个人资料”模型。表结构:用户:
- id(主键)
- 名称
简介:
- id(主键)
- 角色
- user_id(参考密钥)
型号:用户:
class UserModel extends AppModel{
var $name = 'User';
public $hasOne = array(
'Profile'
);
}
简介:
class ProfileModel extends AppModel{
var $name = 'Profile';
public $belongsTo = array('User'); }
控制器:用户:
lass UsersController extends AppController{
var $name = 'Users';
public $scaffold;
function index(){
$user = $this->User->find('all'); //HERE I expect to get User and Profiles data
pr($user);
}
}
个人资料:
class ProfilesController extends AppController{
var $name = 'Profiles';
public $scaffold;
function index(){
$profile = $this->Profile->find('all');
pr($profile);
}
}
如果我运行用户:/localhost/test_php_apps/users/ 我得到:
Array (
[0] => Array
(
[User] => Array
(
[id] => 1
[name] => rohini
)
)
)
我想知道为什么没有显示“个人资料”数据。我在表中手动添加了记录。
如果我在 UsersController 中尝试:$user = $this->User->Profile->find('all'); 我会收到以下错误:
在非对象上调用成员函数 find()
我的猜测是设置关联有问题。但不确定是什么搞砸了。
我知道这是一个非常基本的问题,但即使阅读了 10 到 15 个相关案例,我似乎也找不到答案。
任何帮助将不胜感激。
【问题讨论】:
-
我没有看到任何可控制的操作在这里发生。你
$recursive的价值是什么? -
我已经设置好了:class AppModel extends Model { public $actAs = 'Containable'; }
-
不要使用 Containable。这很简单。当您收到“在非对象上调用成员函数 find()”时,表示您的模型未关联。可容纳用于其他目的
标签: cakephp