PHP:可以与我的数据库表结构一起使用的 ORM 框架或库

Posted

技术标签:

【中文标题】PHP:可以与我的数据库表结构一起使用的 ORM 框架或库【英文标题】:PHP: ORM framework or library that I can use with my database table structure 【发布时间】:2010-05-17 14:22:47 【问题描述】:

我使用的是 Kohanaphp ORM,但我无法将它与我的数据库表结构一起使用。所以,我需要一个框架或库 ORM 来使用它。

对于 Kohana,我需要遵循命名约定。我不能使用像“idUnidadeMedida”这样的字段名称(外键)。

有什么建议吗?

谢谢。


<?php
class Model_Produto extends ORM 
    protected $_table_name = 'produtos';
    protected $_primary_key = 'pro_codigo';
    protected $_has_one = array('unidade' => array('model' => 'unidade', 'foreign_key' => 'uni_codigo'));

?>

<?php
class Model_Unidade extends ORM 
    protected $_table_name = 'unidades';
    protected $_primary_key = 'uni_codigo';

?>

【问题讨论】:

【参考方案1】:

实际上,Kohana ORM 并没有那么有限。在 Ko3 的 ORM 的情况下,您可以定义与您的关系相关的所有内容,正如我在此处解释的那样;

How do I relate tables with different foreign key names in Kohana ORM?

(看代码,不解释,因为那家伙要求 varchar FKs )

【讨论】:

我做到了:受保护的 $_has_one = array('unidade' => array('model' => 'unidade', 'foreign_key' => 'pro_idUnidadeUso'));但我得到:Database_Exception [1054]:'where 子句'中的未知列'unidades.pro_idUnidadeUso' [SELECT unidades.* FROM unidades WHERE unidades.pro_idUnidadeUso = '2' ORDER BY unidadesuni_codigo ASC 限制 1 ] :( @Thomas:你的外键名字真的是'pro_idUnidadeUso'吗?也许只有“idUnidadeUso”?这是 mysql 错误,而不是模型错误 :) 你没有传递正确的 FK 名称。 所以,让我更好地解释一下。我有 2 张桌子:produtos 和 unidades。 produto 有一个 unidade,produto 表有一个名为 pro_idUnidadeUso 的字段,它引用一个 unidade id。知道了?谢谢。 @Thomas 您在错误的模型中定义了 pro_idUnidadeUso ( unidades 而不是 produto )。那是您遇到的数据库错误,但仍然不是模型。 unidades 表中没有 pro_idUnidadeUso 字段。【参考方案2】:

Doctrine 是 PHP 最强大的 ORM(和数据库抽象层)——没有什么不能做的。 V2(即将发布)很可能成为事实上的标准,并将与框架(即 Zend,尽管它也很容易独立使用)集成。

Doctrine 2 Preview release Slideshare presentation Wiki Overview

【讨论】:

我可以定义我的数据库表结构吗?谢谢你! 当然可以 - 常见问题解答已关闭但此处缓存版本webcache.googleusercontent.com/…

以上是关于PHP:可以与我的数据库表结构一起使用的 ORM 框架或库的主要内容,如果未能解决你的问题,请参考以下文章

我可以在不将实体连接到数据库表的情况下使用 ORM

与我的应用程序一起提供的开源数据库[关闭]

与我的数据库的单列一起使用的查询错误

将 Codeigniter 2 与 Doctrine ORM 2 < PHP v5.2 一起使用

Laravel Eloquent ORM - 获取第一和第三表数据

php:将一个多表选择分成几个对象/对象结构