2

次のような方法があるかどうかを知る必要があります。

$customerClient = $clientTable->findByCustomerNumber($this->array_data[$rowIndex]['D']);
$customerClient = $customerClient->findOneByEmpCartera($portfolio);

このエラーメッセージが表示されます

未定義メソッド Doctrine_Collection::findOneByEmpCartera() の呼び出し

$clientTableオブジェクト テーブルで2 つのフィルターを実行する必要があります。

どんなアドバイスも私にとって役に立ちます。

4

3 に答える 3

7

Symfony 1.4 実際には乗算フィールドを一度に処理できますが、この機能をどのように使用するかはばかげています

Doctrine::getTable('MtCheck')->findOneBy('idAndc_type', array($id,$type))

どこのテーブル

CREATE TABLE `mt_check` (
  `id` int(11) NOT NULL,
  `c_type` int(11) NOT NULL,
  `c_ver` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`,`c_type`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

「And」または「Or」を正確に使用できます。前後にスペースは使用できません。

于 2012-10-31T16:43:59.877 に答える
4

このようにすることはできません。

メソッドはfindBy*常に を返しますDoctrine_Collection。また、オブジェクトfindBy*からメソッドを呼び出す必要がありTableます。

次の 1 つの customfindByで実行できますClientTable

  // you may update relation and/or table name
  public function findOneCustomerByEmpCartera($customer_member, $portfolio)
  {
    $q = $this->createQuery()
      ->from('Client cl')
      ->leftJoin('cl.Customer cu');
      ->where('cl.customer_number = ? AND cu.emp_cartera', array($customer_member, $portfolio));

    return $q->limit(1)->execute()->getFirst();
  }
于 2012-06-12T06:17:22.283 に答える
2

ラダンマンフの答えは、私の問題を簡単に解決するのに役立ちました。質問によると、以下も機能するはずです。

Doctrine::getTable('MtCheck')->findOneByIdAndCType($id,$type);

ここで違いに注意してください。パラメータとして array() が渡されませんでした。価値観だけ。

私は両方の方法を試しましたが、両方ともうまくいきました。

詳細説明 DQL: DOctrine クエリ言語: Magic Finders

于 2013-04-24T17:50:03.950 に答える