Как выбрать определенные столбцы в таблице соединения в Propel?

Мне нужно выбрать конкретный набор столбцов из обеих таблиц, используя Propel 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;

Я изо всех сил, где необходимые столбцы в обеих таблицах имеют одинаковое имя, но необходимо объединить с использованием другого столбца.

Помогите мне с кодом Propel php, а также с соответствующим сайтом ссылок. Документ на официальном сайте не является хорошим учебником.

2

Решение

Это должно работать, если вы правильно определили свои модели.

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

Другие решения

Вам нужно использовать 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();
1

По вопросам рекламы [email protected]