Значение пользовательского поля клиента Whmcs

#php #xml #api #whmcs

#php #xml #API #whmcs

Вопрос:

Попытать счастья здесь после 1 недели безуспешной помощи с форума WHMCS и поддержки, ссылающейся только на документы и форум.

Я хочу получить значение из полей из пользовательских полей клиента, где я знаю имя поля

Согласно документации и сообщению на форуме, теоретически это должно сработать, но этого не происходит, ничего не возвращается. Есть идеи?

     $clientFields =  Client::find($clientID)->customFieldValues  ;  
foreach($clientFields AS $field)
{

if (isset($field->customField->fieldName) 

and $field->customField->fieldName == 'NoridCID') 

{ 
    $xml .= $field->customField->value; // Add ID to XML 
}   

    else
    {
        return array("error" => "Some Error Message");

    }
}
  

Ответ №1:

Это действительно должно быть очень просто. Я собираюсь показать вам различные способы сделать это в зависимости от того, что вы хотите получить, и от имеющейся у вас информации. Конечно, я знаю, что вам известно fieldname , хотя я бы рекомендовал зайти в вашу tblcustomfields таблицу вашей установки WHMCS и получить id значение для этого пользовательского поля. Теперь давайте перейдем к коду:

Во-первых: включите следующий код:

 require("init.php");
use WHMCSDatabaseCapsule;
  

Второе: Объявите известную переменную:

Я предполагаю, что у вас уже есть значения, которые вы знаете. Итак, я просто собираюсь использовать здесь свои псевдозначения:

 $clientID = 12;
$customFieldID = 1;
$customFieldName = 'Where did you hear about us?';
  

Третье: добавьте код для извлечения данных

Я собираюсь использовать четыре кода. Выберите то, что наилучшим образом соответствует вашим потребностям.

Ответ: Получаем значение пользовательского поля для 1 клиента. У вас есть идентификатор клиента и имя пользовательского поля

 $customFieldValue1 =  Capsule::table('tblcustomfields')
                                ->join('tblcustomfieldsvalues','tblcustomfieldsvalues.fieldid','=','tblcustomfields.id')
                                ->where('tblcustomfieldsvalues.relid','=',$clientID)
                                ->where('tblcustomfields.fieldname','=',$customFieldName)
                                ->value('tblcustomfieldsvalues.value');

                                //Use the retrieved vaue e.g echo
                                echo $customFieldValue1."<br/>";
  

B: Получить значение пользовательского поля для 1 клиента. У вас есть идентификатор клиента и идентификатор пользовательского поля

 $customFieldValue2 = Capsule::table('tblcustomfieldsvalues')
                                ->where('relid',$clientID)
                                ->where('fieldid',$customFieldID)
                                ->value('value');

                                //Use the retrieved vaue e.g echo
                                echo $customFieldValue2."<br/>";
  

C: Получить значение пользовательского поля для ВСЕХ клиентов. У вас есть идентификатор клиента и имя пользовательского поля

 $customFieldValues1 =  Capsule::table('tblcustomfields')
                                ->join('tblcustomfieldsvalues','tblcustomfieldsvalues.fieldid','=','tblcustomfields.id')
                                ->select('tblcustomfieldsvalues.value as value','tblcustomfieldsvalues.relid as client')
                                ->where('tblcustomfields.fieldname','=',$customFieldName)
                                ->get();

                                //use retrieved values
                                foreach($customFieldValues1 as $customField){
                                    $clientId = $customField->client;
                                    $customFieldValue = $customField->value;

                                    echo $clientId." : ".$customFieldValue."<br/>";
                                }
  

C: Получить значения пользовательских полей для ВСЕХ клиентов. У вас есть идентификатор клиента и идентификатор пользовательского поля

 $customFieldValues2 =  Capsule::table('tblcustomfieldsvalues')
                                ->select('relid as client','value')
                                ->where('fieldid',$customFieldID)
                                ->get();

                                //use retrieved values
                                foreach($customFieldValues2 as $customField){
                                    $clientId = $customField->client;
                                    $customFieldValue = $customField->value;

                                    echo $clientId." : ".$customFieldValue."<br/>";
                                }
  

Пожалуйста, дайте мне знать, если это ответит на ваш вопрос.

Для получения дополнительной информации о том, как писать запросы с помощью laravel, который WHMCS в настоящее время использует для взаимодействия с базами данных, вы можете посетитьhttps://laravel.com/docs/5.2/queries

Комментарии:

1. Есть также другой очень хороший подход, опубликованный на форуме сообщества WHMCS по адресу whmcs.community / topic / … , который, я полагаю, может быть полезен.

2. Я создаю перехват, как мне получить tblcustomfieldsvalues.relid?