我有以下型号:
class Model_Job extends ORM
{
public $ID;
public $user_ID;
public $title;
//some more variables
}
在我的控制器中,我有一个函数action_view()
;查看作业详细信息单个作业,与http://kohanaframework.org/3.3/guide/orm/using#finding-an-object
public function action_view()
{
$this->render('Shit');
$this->template->content = View::factory('jobs/job')
->bind('job', $job);
$job = ORM::factory('job', $this->request->param('id'));
}
我有另一个函数action_all()
,它只使用find_all
获取所有作业并将它们放在页面上,这很有效(意味着echo $job->ID
执行它应该做的事情;回显ID。但是action_view()
没有。我会放置一些echo Debug::vars($job)
object Model_Job(39) {
public ID => NULL //Note they are NULL
public user_ID => NULL
public title => NULL
......................
protected _object => array(5) (
"ID" => string(1) "1"
"user_ID" => string(1) "1"
"title" => string(14) "Testbaantjeeee"
................
)
.....................
}
来自echo Debug::vars($job)
的{{1}}的示例如下:
action_all()
我查看了kohena关于object Model_Job(39) {
public ID => 1 //Note they are NOT NULL
public user_ID => 1
public title => "Testbaantjeeee"
......................
protected _object => array(5) (
"ID" => string(1) NULL //now these are NULL
"user_ID" => string(1) NULL
"title" => string(14) NULL
.....................
)
.....................
}
,factory
,find
等的文档,但无法弄清楚find_all
或factory
没有做什么{ {1}}正在做。我错过了什么吗?我用它来工作:
find
但这样做对我来说毫无意义。我错过了什么?
答案 0 :(得分:1)
我继续前进并解决了这个问题。
我创建了一个班级Model_Base
class Model_Base extends ORM
{
public function Load()
{
foreach($this->object() as $key => $value)
if(!is_object($value))
if(property_exists(get_class($this), $key))
$this->$key = $value;
}
}
现在我从这里扩展我的所有模型
class Model_Job extends Model_Base
{
..................
}
现在我的控制器使用了这个:
public function action_view()
{
$this->render('Shit');
$this->template->content = View::factory('jobs/job')
->bind('job', $job);
$job = ORM::factory('job', $this->request->param('id'));
$job->Load();
}
它转储:
object Model_Job(39) {
protected _primary_key => string(2) "ID"
public ID => string(1) "1"
public user_ID => string(1) "1"
public title => string(14) "Testbaantjeeee"
......................
}
我仍然认为没有意义。但是无所谓。如果有人知道他们为什么find()/factory('foo', $id)
和find_all()
如此根本不同以致前者毫无用处,请告诉我们:)
答案 1 :(得分:0)
您正在为您的ID使用不同的密钥,它是大写ID。确保在模型中设置
protected $_primary_key = 'ID';
因为按照你的例子,两种方法都应该完全相同。