我编写了一个查询,通过连接两个表从数据库中检索值,但它抛出了错误。
以下是我编写的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。