Bu SQL Active Record uygulanması?

2 Cevap php

Ben CodeIgniter kullanıyorum. Benim veritabanı Aşağıdaki SQL deyimi çalışıyor. MySQL 5, ama ben gerçekten ark MSSQL, PG ile uyumlu olmaz düşünüyorum. Bu nedenle tamamen çapraz veritabanı yapma, CI Active Record sınıfını kullanarak deyimi uygulamak mümkün olup olmadığını merak ediyorum?

Ben düşecek nerede "GROUP_CONCAT" olduğunu düşünüyorum ...

EDIT - CodeIgniter gemide Bulundu

"It should be noted, however, that CONCAT is database specific. It’s not actually a part of the active record library, although I’m sure it’s supported by most, if not all database engines."

Ben saf Active Record kullanarak mümkün değil gibi gözüküyor gibi, bu yeniden düşünmek zorunda kalabilirsiniz.

SELECT system.system_id,
       system.uuid,
       system.hostname,
       system.man_description,
       system.man_ip_address,
       system.os_short_name,
       system.os_full_name,
       system.man_type,
       system.man_icon,
       GROUP_CONCAT(DISTINCT '<a href="', oa_group.group_id, '">', oa_group.group_description, '</a>' ORDER BY group_description SEPARATOR ', ') as tag
FROM system,
       oa_group,
       oa_group_sys
WHERE system.system_id IN (
               SELECT system.system_id
               FROM system,
                       oa_group_sys,
                       oa_group,
                       oa_group_user
               WHERE system.man_status = 'production' AND
                       system.system_id = oa_group_sys.system_id AND
                       oa_group_sys.group_id = oa_group.group_id AND
                       oa_group.group_id = oa_group_user.group_id AND
                       oa_group_user.user_id = '1' ) AND
       system.system_id = oa_group_sys.system_id AND
       oa_group_sys.group_id = oa_group.group_id
GROUP BY system.system_id

2 Cevap

Sen kesinlikle evet ... Neden bütün bunlar adına, SQL, HTML içine bir şey patlamaya group_concat kötüye kutsal tis yeniden düşünmek zorunda? Eğer concatting konum alanında bir "karakter varsa ne olur?

Good rule of thumb is: Use your database for storage Use your PHP for fetching the data and transforming it to HTML or PDF, or whatever kind of output you want.

Ayrıca, Katıldı kullanarak okumak isteyebilirsiniz? Artık bazı biri katılır ve fıkra yeterli olacaktır nerede iyi inşa 2 sorguları koşuyoruz.

Benim şüphe daha hızlı ve daha temiz hem veritabanının dışında dize manipülasyon yapmak bulabilirsiniz olmasıdır. Uzun vadede, bu yol sürdürülebilirlik sorunları ile dolu olacak.