使用 KOHANA 2.x 的 PHP 的 MVC 模型中的 SQL JOIN 查询


SQL JOIN query in MVC model of PHP using KOHANA 2.x

我编写了一个查询,通过连接两个表从数据库中检索值,但它抛出了错误。

以下是我编写的SQL查询。

if ($selected_key_type != null ) {
    $o = ORM::factory('organization')->join_table('keywords_organization','keywords_organization.organization_id', 'organization.id')->where('keywords_organization.keyword_id',$selected_key_type);

    }

以下是显示的错误

Fatal error: Call to a member function where() on a non-object in /var/www/xxxx/html/application/controllers/organizations.php on line 51

任何帮助将不胜感激:)

您使用

的语法不正确。

它应该是:

$o = ORM::factory('organization')
    ->join('keywords_organization','LEFT')
    ->on('keywords_organization.organization_id', '=', $selected_key_type)
    ->find_all();

来源: https://stackoverflow.com/a/5685379/604041

join_table采用一个参数join_table('table_name'),用于创建数据透视表。所以我想你是在尝试使用 join() 而不是 join_table()。

小花 2.3.4 ORM数据透视表查询

join_table() 不是你要找的。 join() 是正确的方法,是 Kohana 2+ 中查询生成器的一部分。仅供参考 join_table() 使用字母顺序比较来选择连接表的名称。因此,它是一个返回 $this 以外的值的方法。可链接的方法$class->method1()->method2()->method3() 返回$this这就是使它们可链接的原因。我是 Kohana 3.2 用户,如果您的原始代码在减去连接部分后是正确的,这应该可以工作。

if ($selected_key_type != null ) {
    $o = ORM::factory('organization')
        ->join('keywords_organization','keywords_organization.organization_id', 'organization.id')
        ->where('keywords_organization.keyword_id',$selected_key_type);
}

您还可以向 join() 添加第四个参数,用于指定要创建的连接类型。有关更多详细信息,请参阅 http://docs.kohanaphp.com/libraries/database/builder#join。