【问题标题】:SQL JOIN query in MVC model of PHP using KOHANA 2.x使用 KOHANA 2.x 在 PHP 的 MVC 模型中的 SQL JOIN 查询
【发布时间】:2012-05-17 18:31:41
【问题描述】:

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

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

任何帮助将不胜感激:)

【问题讨论】:

  • 这意味着where之前的部分不是一个对象:它可能是null,或者一个字符串,或者一个布尔值等等。 var_dump(ORM::factory('organization')->join_table('keywords_organization','keywords_organization.organization_id', 'organization.id'))的输出?
  • string(35) "keywords_organization_organizations" 是输出
  • $o = ORM::factory('organization')->join_table('keywords','keywords.organization_id', 'id') 呢?

标签: php kohana


【解决方案1】:

您使用的语法不正确。

应该是:

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

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

【讨论】:

  • 我尝试了您建议的语法,但此语法适用于 kohana 版本 3。我使用的是 kohana 版本 2
【解决方案2】:

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

Kohana 2.3.4 ORM pivot table query

【讨论】:

    【解决方案3】:

    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

    【讨论】:

    • 这回答了你的问题吗?
    猜你喜欢
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 2012-11-04
    • 1970-01-01
    相关资源
    最近更新 更多