0

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

以下是我编写的 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

任何帮助,将不胜感激 :)

4

3 回答 3

0

您使用的语法不正确。

它应该是:

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

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

于 2012-05-17T19:16:26.810 回答
0

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

Kohana 2.3.4 ORM 数据透视表查询

于 2012-05-18T06:28:02.203 回答
0

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 。

于 2012-05-20T09:12:14.723 回答