propel orm 2.0.0を使用して両方のテーブルから特定の列のセットを選択する必要があります。同等のクエリは次のとおりですpropelでテーブル結合の特定の列を選択するにはどうすればよいですか?
両方のテーブルの必要な列が同じ名前だが、別の列を使用して結合する必要がある場合、私は苦労しています。
プロペルのPHPコードを参考にしてください。また、参考サイトも参考にしてください。公式サイトの文書は良いチュートリアルではありません。
propel orm 2.0.0を使用して両方のテーブルから特定の列のセットを選択する必要があります。同等のクエリは次のとおりですpropelでテーブル結合の特定の列を選択するにはどうすればよいですか?
両方のテーブルの必要な列が同じ名前だが、別の列を使用して結合する必要がある場合、私は苦労しています。
プロペルのPHPコードを参考にしてください。また、参考サイトも参考にしてください。公式サイトの文書は良いチュートリアルではありません。
モデルを正しく定義していれば、これはうまくいくはずです。
$rows = BrandQuery::create()
->select(['name', 'grade'])
->joinWith('dealer')
->withColumn('dealer.name', 'dealer_name')
->withColumn('dealer.number')
->find();
ORMを使用する必要があります。すべてのモデルが適切にセットアップされていると仮定します。
<?php
$brands = BrandQuery::create()->find();
// $brands contains a collection of Brand objects
// one object for every row of the brand table
foreach($brands as $brand) {
$dealers = $brand->getDealers();
// $dealers contains a collection of Dealer objects for this brand
// one object for every row of the dealers table for brand row
}
ここでは、カスタムSQLを使用する方法があります。
<?php
use Propel\Runtime\Propel;
$con = Propel::getWriteConnection(YOUR_DATABASE_NAME);
$sql = "select b.name as brand_name, b.grade, d.name as dealer_name, d.number from brand as b join dealer as d on d.id = b.dealer_id";
$stmt = $con->prepare($sql);
$stmt->execute();