gpt4 book ai didi

php - Kohana 3.2 ORM 和 PDO

转载 作者:IT老高 更新时间:2023-10-29 00:06:59 27 4
gpt4 key购买 nike

我正在尝试 Kohana,我尝试使用 ORM + PDO + MySQL 数据库,但我似乎在 google 或 SO 中找不到答案。

我同时启用了数据库和 ORM 模块,并且我在 modules/database/config/database.php 中将 PDO 设置为默认值

我有一个简单的 Controller 和一个简单的模型:

模型应用程序/类/模型/blogpost.php:

<?php
class Model_Blogpost extends ORM {
protected $_table_name = 'blog_post';
}

CONTROLLER:在 application/classes/controller/welcome.php 中

<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Welcome extends Controller {

public function action_index() {

$Blog_Post = ORM::factory('blogpost'); // ==> ERROR HERE

$Blog_Post->name = 'test1';
$Blog_Post->description = 'this is a quick test';
$Blog_Post->content = 'The content goes here....';
$Blog_Post->save();

$id = $Blog_Post->id;

$Blog_Post = ORM::factory('blogpost', $id);
$view->Blog_Post = $Blog_Post;

$this->response->body($view);
}
} // End Welcome

我在尝试运行测试时收到以下错误:

Kohana_Exception [0]:Kohana_Database_PDO 不支持数据库方法 list_columns

我在 google 和 Stack Overflow 中进行了搜索,我的印象是 ORM 可能不适用于 PDO,这是正确的吗?还是我错过了什么?

谢谢。

最佳答案

list_columns 用于ORM获取表中未指定的所有列。要解决此问题,您可以在 _table_columns protected 属性中指定表列:

class Model_Blogpost extends ORM {
protected $_table_name = 'blog_post';
protected $_table_columns = array(
'column1' => NULL,
'column2' => NULL,
// ...
'columnx' => NULL,
);
}

这将确保 list_columns 不会被调用。缺点是您必须跟踪对表所做的每一次更改。好处是不会调用额外的 SHOW FULL COLUMNS 查询,这意味着性能会有所提升。

另一种方法是覆盖 list_columns 方法并提供您自己的方法来列出列。

关于php - Kohana 3.2 ORM 和 PDO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7314739/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com