4

次のコードを使用して、同じ DB クエリで 2 つのデータベース テーブルから情報を取得しようとしています。

$query  =   db_select('webform_questionnaire_fieldset', 'wqf');
                        $query->join('webform_component', 'wc', 'wqf.cid = wc.cid');
                        $query->fields('wqf')
                        ->fields('wc')
                        ->condition('wqf.cid', $cid, '=')
                        ->condition('wqf.nid', $nid, '=')
                        ->condition('wqf.cid', 'wc.cid', '=')
                        ->execute()
                        ->fetchAll();

得られる出力は、次のようにデータベース データに似ていませんが、データベース メタ データに似ています。

SelectQuery::__set_state(array(
   'fields' => 
  array (
  ),
   'expressions' => 
  array (
  ),
   'tables' => 
  array (
    'wqf' => 
    array (
      'join type' => NULL,
      'table' => 'webform_questionnaire_fieldset',
      'alias' => 'wqf',
      'condition' => NULL,
      'arguments' => 
      array (
      ),
      'all_fields' => true,
    ),
    'wc' => 
    array (
      'join type' => 'INNER',
      'table' => 'webform_component',
      'alias' => 'wc',
      'condition' => NULL,
      'arguments' => 
      array (
      ),
      'all_fields' => true,
    ),
  ),
   'order' => 
  array (
  ), ......

誰が私が間違っているのか教えてもらえますか?

4

1 に答える 1

5

conditionを結合ステートメントに追加します。のようon table1.id = table2.idに、次に追加$result = $query->execute()->fetchAll();

$query = db_select('webform_questionnaire_fieldset', 'wqf');
$query->join('webform_component', 'wc', 'wqf.cid = wc.cid');
$query->fields('wqf')
    ->fields('wc')
    ->condition('wqf.cid', $cid, '=')
    ->condition('wqf.nid', $nid, '=')
    ->condition('wqf.cid', 'wc.cid', '=');
$result = $query->execute()->fetchAll();

これが役に立てば幸いです...ムハンマド。

于 2012-07-18T14:13:24.077 に答える