我试图找出如何理解* Jamie Rumbelow的MY_Model *的使用,具体说明如何实现这个想法。
我正在把游戏应用放在一起。有很多用户和很多角色。每个用户可以有许多字符,但每个字符只能由一个用户控制。我有一个用户的表,其中有一个名为default_character
的字段。这是由字符的id字段表示的外键。
在我的代码中,我使用以下函数调用来获取当前登录的用户。
$user_data = $this->user->get_by('username', $post_username);
我想要做的是当我这样做并且它添加了default_character字段的整数值而不是我希望它获得该字符的名称。这会是什么样的?
编辑:
由于某种原因,在尝试 swatkins 回答之后仍然只显示数据库中的数字字符串值。我想要做的是用它来从字符表中获取character_name。
表
user - user_id, username, default_character_id
characters - id, character_name
object(stdClass)#23 (12) {
["user_id"]=>
string(5) "10003"
["first_name"]=>
string(3) "tom"
["last_name"]=>
string(8) "williams"
["username"]=>
string(9) "twilliams"
["password"]=>
string(40) "431db25cf8fe0ccf374365ae9c644c7bfdeb7399"
["password_hash"]=>
string(11) "ed95d918116"
["email_address"]=>
string(19) "twilliams@yahoo.com"
["status_id"]=>
string(1) "2"
["lock_date"]=>
string(19) "0000-00-00 00:00:00"
["default_character_id"]=>
string(1) "1"
["created_at"]=>
string(19) "2013-07-30 10:00:00"
["updated_at"]=>
string(19) "0000-00-00 00:00:00"
}
用户模型(application / modules / user / models / user_model.php)(在MY_Controller中加载)
<?php
class User_model extends MY_Model
{
public $primary_key = 'user_id';
public $has_many = array('characters' => array('model' => 'character_model' ));
public function __construct()
{
parent::__construct();
}
}
字符模型(application / modules / character / models / character_model.php)(在控制面板控制器中加载)
<?php
class Character_model extends MY_Model
{
public $belongs_to = array('user' => array('primary_key' => 'default_character_id'));
public function __construct()
{
parent::__construct();
}
}
我想知道这是否是数据库结构问题。有关这个主题的更多想法?任何帮助都会很棒。
我仍然对我做错了什么感到忧虑。有人能帮帮我吗?
答案 0 :(得分:2)
假设您已正确设置关系,可以使用with
方法访问关系的子项:
https://github.com/jamierumbelow/codeigniter-base-model
// from the docs
$post = $this->post_model->with('author')
->with('comments')
->get(1);
echo $post->author->name;
foreach ($post->comments as $comment)
{
echo $message;
}
因此,此博客会抓取post
,其ID为1
,然后抓取author
和comments
数组。您可以将它们作为父对象的属性进行访问。
<强>更新强>
您需要在模型中建立关系。因此,您可以像这样设置user
和character
个实体:
class User_model extends MY_Model
{
public $has_many = array('characters');
}
class Character_model extends MY_Model
{
public $belongs_to = array('user' => array('primary_key' => 'default_character'));
}