2016-04-10 19 views
2

propel orm 2.0.0を使用して両方のテーブルから特定の列のセットを選択する必要があります。同等のクエリは次のとおりですpropelでテーブル結合の特定の列を選択するにはどうすればよいですか?

両方のテーブルの必要な列が同じ名前だが、別の列を使用して結合する必要がある場合、私は苦労しています。

プロペルのPHPコードを参考にしてください。また、参考サイトも参考にしてください。公式サイトの文書は良いチュートリアルではありません。

答えて

2

モデルを正しく定義していれば、これはうまくいくはずです。

$rows = BrandQuery::create() 
    ->select(['name', 'grade']) 
    ->joinWith('dealer') 
    ->withColumn('dealer.name', 'dealer_name') 
    ->withColumn('dealer.number') 
    ->find(); 
1

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(); 
関連する問題