Odkazy: dibi | API reference

Forum: [česky] [english]

dibi fórum

tiny ‘n’ smart
database layer

Nejste přihlášen(a)

#1 před 10 měsíci

zahry
Nový člen
Registrovaný: 17. 4. 2010
Příspěvky: 8

Jak odstranit hranaté závorky v selektu nad MSSQL

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)

 

#2 před 10 měsíci

Milo
dibi guru
Registrovaný: 4. 5. 2010
Příspěvky: 298

Re: Jak odstranit hranaté závorky v selektu nad MSSQL

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

 

#3 před 10 měsíci

Milo
dibi guru
Registrovaný: 4. 5. 2010
Příspěvky: 298

Re: Jak odstranit hranaté závorky v selektu nad MSSQL

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();

 

Zápatí