Reputation: 539
I have a sql query working fine. However after execution (php form in joomla inserted with sourcerer plugin) resulting array stays empty.
sql code:
SELECT `comid`,`comname`,`comlogo`
FROM ffd_companies,ffd_comusercon,ffd_users
WHERE companyid=comid AND userid=id AND id=1;
code in joomla->customHTMLmodule->sourcerer:
{source}
<?php
$user = JFactory::getUser();
echo $user->id;
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('comid','comname')));
$query->from($db->quoteName(array('ffd_companies','ffd_comusercon','ffd_users')));
$query->where($db->quoteName('companyid').' = '.$db->quoteName('comid').' AND '.$db->quote('userid') .' = '. $db->quote('id').' AND '. $db->quote('userid') .' = '.$db->quote($user->id));
$db->setQuery($query);
$row = $db->loadRowList();
print_r($row);
?>
{/source}
Tables & Relations :
SQL query: SELECT * FROM ffd_users
;
id ...
standar joomla users table nothing changed
SQL query: SELECT * FROM ffd_comusercon
; (Index table for Many to many rel. between. users and companies)
companyid (FOREIGN KEY OF comid ) userid (FOREIGN KEY OF id )
SQL query: SELECT * FROM ffd_companies
;
comid comname comtype comlogo comyedek1 comyedek2 omyedek3 comyedek4 comyedek5 comyedek6 comyedek7 comyedek8
Upvotes: 0
Views: 733
Reputation: 2012
This should work:
<?php
$user = JFactory::getUser();
echo $user->id;
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('comid','comname')))
->from($db->quoteName(array('ffd_companies','ffd_comusercon','ffd_users')))
->where($db->quoteName('companyid').' = '.$db->quoteName('comid'))
->where($db->quote('userid') .' = '. $db->quote('id'))
->where($db->quote('userid') .' = '.$db->quote($user->id));
$db->setQuery($query);
$row = $db->loadObjectList();
var_dump($row);
?>
Update query (with left joins), it's only a guess without database structure, but i guess you get the point
$query->select('COMP.id AS comid, COMP.name as comname')->
from($db->quoteName('#__companies') . ' COMP')->
join('LEFT', $db->quoteName('#__comusercon') . ' COMPX ON COMP.id = COMPX.company_id')->
join('LEFT', $db->quoteName('#__users') . ' USR ON USR.id = COMPX.user_id')->
where('USR.id = ' . $db->quote($user->id))->
group('COMP.id');
Upvotes: 2
Reputation: 539
After countless of rewrite finally it gave same result with the pure sql.
<?php
$user = JFactory::getUser();
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('comid', 'comname','comlogo') ) );
$query->from($db->quoteName(array('ffd_companies',ffd_comusercon,'ffd_users') ) );
$query->where($db->quoteName('companyid') .' = '. $db->quoteName('comid') .' AND '. $db->quoteName('userid') .' = '. $db->quoteName('id') .' AND '. $db->quoteName('userid') .' = '. $db->quote($user->id)
);
$db->setQuery($query);
$row = $db->loadRowList();
print_r($row);
?>
Upvotes: 0