在Jamie Rumbelow中使用关系MY_model

时间:2012-10-11 12:00:15

标签: php codeigniter relationship has-many belongs-to

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


首先,我有2个课程item_model.php& user_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.

请帮忙。

2 个答案:

答案 0 :(得分:1)

不应$item_details->user_id->username;$item_details->user->username;

您的用户表也称为userusers?你在这里告诉它称之为user

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

答案 1 :(得分:1)

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

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') );

会更正确。

相关问题