Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Zend Db表双连接_Php_Mysql_Zend Framework_Join - Fatal编程技术网

Php Zend Db表双连接

Php Zend Db表双连接,php,mysql,zend-framework,join,Php,Mysql,Zend Framework,Join,它是plan\u payment\u type.plan\u id和plan.id之间的外键。在我的代码中,我知道一个$plan\u payment\u type\u id 我的任务是选择payment\u period。 步骤: 从plan\u payment\u type 使用所选的计划id 我如何在Zend框架中使用一个查询来实现这一点? 非常感谢。以下SQL语句和PHP代码相互对应: 1. plan_payment_type: id plan_id 2. plan

它是
plan\u payment\u type.plan\u id
plan.id
之间的外键。在我的代码中,我知道一个$plan\u payment\u type\u id

我的任务是选择
payment\u period
。 步骤:

  • plan\u payment\u type
  • 使用所选的
    计划id
我如何在Zend框架中使用一个查询来实现这一点?
非常感谢。

以下SQL语句和PHP代码相互对应:

1. plan_payment_type:
   id
   plan_id

2. plan
   id
   payment_period

以下SQL语句和PHP代码相互对应:

1. plan_payment_type:
   id
   plan_id

2. plan
   id
   payment_period

在一切发生之前,我会以不同的方式组织它们。不是应具有plan.id的计划类型。这是不合逻辑的。您有一个包含plan_类型的表,该表有一个plan.id和一个plan.name,该关系通过plan.type_id位于plan表中

这可以通过以下方式解决:

SELECT
  t.id AS plan_payment_type_id,
  p.id AS plan_id,
  p.payment_period
FROM
  plan_payment_type AS t
  INNER JOIN plan AS p ON p.id = t.plan_id
WHERE
  p.id = { SQL query param for $plan_payment_type_id }


$select = $db->select()
          ->from(array('t' => 'plan_payment_type'),
                 array('id' => 'plan_payment_type_id'))
          ->join(array('p' => 'plan'), 'p.id = t.plan_id',
                 array('id' => 'plan_id', 'payment_period'))
          ->where('p.id = ?', $plan_payment_type_id);
稍后,您可以在PlanRow类中使用以下函数:

class Payment_Plan extends Zend_Db_Table_Abstract
{
    protected $_name            = 'plan';
    protected $_referenceMap    = array(
        'Plan' => array(
            'columns'           => 'plan_id',
            'refTableClass'     => 'Plan',
            'refColumns'        => 'id'
        )

}

class Plan_Type extends Zend_Db_Table_Abstract
{
    protected $_name            = 'plan_types';
    protected $_dependentTables = array('Plan_Type');
}
以及获取Plan_type row类中x类型的所有计划

public function type() {
    return $this->findParentRow('Plan_Type');
}

在一切发生之前,我会以不同的方式组织它们。不是应具有plan.id的计划类型。这是不合逻辑的。您有一个包含plan_类型的表,该表有一个plan.id和一个plan.name,该关系通过plan.type_id位于plan表中

这可以通过以下方式解决:

SELECT
  t.id AS plan_payment_type_id,
  p.id AS plan_id,
  p.payment_period
FROM
  plan_payment_type AS t
  INNER JOIN plan AS p ON p.id = t.plan_id
WHERE
  p.id = { SQL query param for $plan_payment_type_id }


$select = $db->select()
          ->from(array('t' => 'plan_payment_type'),
                 array('id' => 'plan_payment_type_id'))
          ->join(array('p' => 'plan'), 'p.id = t.plan_id',
                 array('id' => 'plan_id', 'payment_period'))
          ->where('p.id = ?', $plan_payment_type_id);
稍后,您可以在PlanRow类中使用以下函数:

class Payment_Plan extends Zend_Db_Table_Abstract
{
    protected $_name            = 'plan';
    protected $_referenceMap    = array(
        'Plan' => array(
            'columns'           => 'plan_id',
            'refTableClass'     => 'Plan',
            'refColumns'        => 'id'
        )

}

class Plan_Type extends Zend_Db_Table_Abstract
{
    protected $_name            = 'plan_types';
    protected $_dependentTables = array('Plan_Type');
}
以及获取Plan_type row类中x类型的所有计划

public function type() {
    return $this->findParentRow('Plan_Type');
}

Tomalak
答案更适合我。谢谢,
Elzo Valugi
+1,因为您在数据库布局方面是正确的。在
plan\u payment\u type
上有
plan\u id
对我来说也没有任何意义。我认为您在$\u referenceMap变量
Tomalak
中缺少了一个“')”对我来说更好。谢谢,
Elzo Valugi
+1,因为您在数据库布局方面是正确的。在
plan\u payment\u type
上使用
plan\u id
对我来说也没有任何意义。我认为您的$\u referenceMap变量中缺少了一个“')”