tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

Jak odstranit hranaté závorky v selektu nad MSSQL

před 8 lety

zahry
Člen | 8

Mám pole

<?php
$args[] = 'CAST(Kontakty.Firma AS varbinary(MAX)) AS Firma';
$args[] = 'CAST(Kontakty.KontaktniOsoba AS varbinary(MAX)) AS KontaktniOsoba';
?>

Které vkládám do

<?php
$result = dibi::select($args)
    ->from('[ViewKontakty] Kontakty');
?>

Bohužel pokud uvedený select zobrazím přes test(), tak je vše obaleno hranatými závorkami.

<?php
SELECT
    [CAST([[Kontakty].[Firma]] AS varbinary(MAX)) AS Firma],
    [CAST([[Kontakty].[KontaktniOsoba]] AS varbinary(MAX)) AS KontaktniOsoba]
FROM [ViewKontakty] Kontakty
?>

Nevíte jak se těch závorek zbavit?

Zkoušel jsem různé varianty, ale nic nepomohlo.
Používám MSSQL

Díky

Editoval zahry (19. 7. 2011 19:20)

před 8 lety

Milo
Nette Core | 1119

Prosím tě, naformátuj to trochu ať se to dá číst.

před 8 lety

Milo
Nette Core | 1119

Pokud je SELECTu předán parametr pole, fluent má defaultní modifikátor %n, tj. počítá s tím, že jsou v argumentu názvy sloupců.

Dá se to řešit změnou modifikátoru

$mod = DibiFluent::$modifiers['SELECT'];
DibiFluent::$modifiers['SELECT'] = '%SQL';  // Nebo jiný, který se hodí

$args[] = 'CAST(Kontakty.Firma AS varbinary(MAX)) AS Firma';
$args[] = 'CAST(Kontakty.KontaktniOsoba AS varbinary(MAX)) AS KontaktniOsoba';

$fluent = dibi::select($args);

DibiFluent::$modifiers['SELECT'] = $mod;    // Návrat původního modifikátoru

$fluent->from('[ViewKontakty] Kontakty')->test();