0

我正在使用 MY_model 作为 Codeigniter -base-model。我无法让基本关系正常工作。我搜索了很多,但可以找到解决方案。


首先,我有 2 个类item_model.phpuser_model.php并且都扩展了 MY_Model。

item_model课堂上我已经定义

public $belongs_to = array( 'user' => array( 'model' => 'user_model') );

并且在user_model

public $has_many = array( 'items' => array( 'model' => 'item_model') );

现在,当我打电话时在控制器中

$item_details = $this->item_model->with('user')->find_by_id($item_id);

我得到了正确的数据,$item_details但我无法从“用户”关系中获取信息。 $item_details->user_id->username;.

我收到以下错误

消息:试图获取非对象的属性

表为标准

users table has id, username, ...
item table has id, user_id, title...

user_id is is setUp as FK to users.id.

请帮忙。

4

2 回答 2

1

$item_details->user_id->username;应该$item_details->user->username;吗?

您的用户表也称为useror users?你在这里告诉它调用它user

public $belongs_to = array( 'user' => array( 'model' => 'user_model') );
于 2012-10-11T19:24:50.120 回答
1

如果你检查相关()方法的源代码,你会发现这段代码:

if (is_string($value))
        {
            $relationship = $value;
            $options = array( 'primary_key' => $value . '_id', 'model' => $value . '_model' );
        }
        else
        {
            $relationship = $key;
            $options = $value;
        }

我查看了源代码,如果你使用数组来定义模型,你还需要定义'primary_key',这不在文档中。

'primary_key' 表示这个表的哪个外键链接我的primary_key。

public $belongs_to = array( 'user' => array( 'model' => 'user_model','primary_key'=>'user_id') );

会更对。

于 2013-05-16T00:03:49.020 回答