我正在使用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.
请帮忙。
答案 0 :(得分:1)
不应$item_details->user_id->username;
为$item_details->user->username;
?
您的用户表也称为user
或users
?你在这里告诉它称之为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') );
会更正确。