簡體   English   中英

如何在propel中選擇表聯接上的特定列?

[英]How do I select specific columns on table join in propel?

我需要使用propor orm 2.0.0從兩個表中選擇特定的列集。 等效查詢如下

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;

我在兩個表上必要的列具有相同名稱但需要使用不同列進行聯接的地方苦苦掙扎。

用適當的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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM