0

選択基準に結合がある場合、propel を使用して symfony で一括更新を行うにはどうすればよいですか? これが私がやろうとしていることの例です。

$conn = Propel::getConnection(BudgetLinePeer::DATABASE_NAME);
// Create a Criteria object that will select the correct rows from the database
$selectCriteria = new Criteria();            
$selectCriteria->add(BudgetLinePeer::IDCOL1, $idcol1, Criteria::EQUAL);
$selectCriteria->addJoin(ProjectBudgetLinePeer::IDBUDGET_LINE, BudgetLinePeer::IDBUDGET_LINE);
$selectCriteria->add(ProjectBudgetLinePeer::IDCLIENT, $idclient, Criteria::EQUAL);
$selectCriteria->add(ProjectBudgetLinePeer::IDPROJECT, $project->getIdproject(), Criteria::EQUAL);
// Create a Criteria object includes the value you want to set
$updateCriteria = new Criteria();
$updateCriteria->add(BudgetLinePeer::STATUS, $status);
// Execute the query
BasePeer::doUpdate($selectCriteria, $updateCriteria, $conn);

テーブル BudgetLine で更新 (新しいステータスの更新) を行おうとしています。

編集:ここに私が得ているエラーのスニペットがあります:

/Applications/MAMP/htdocs/proj_ict_new/trunk/cbm/plugins/sfPropelORMPlugin/lib/vendor/propel/runtime/lib/util/BasePeer.php 行 369 の foreach() に無効な引数が指定されました

これは、結合ステートメントに関連しています。使ってみましたuseXYZQuery()->filterCon()->endUse()。しかし、再び同じエラーが発生しました。

4

1 に答える 1

0

この問題を解決する別の方法を見つけることができました。解決策は次のとおりです。

$budgetLine_ids = BudgetLineQuery::create()
                 ->filterByIdcol1($col1)
                 ->useProjectBudgetLineQuery()
                 ->filterbyIdproject()->endUse()->find()->toArray('budgetline_id');

$selectCriteria = BudgetLineQuery::create()->filterByIdbudgetLine(array_keys($budgetLine_ids));      

// Create a Criteria object includes the value you want to set
$updateCriteria = new Criteria();
$updateCriteria->add(BudgetLinePeer::STATUS, $status);
// Execute the query
BasePeer::doUpdate($selectCriteria, $updateCriteria, $conn);
于 2012-12-28T05:01:01.733 に答える